Después de tanto tiempo sin actualizar vengo con un pequeño tutorial bastante interesante. En poco tiempo he tenido que hacerlo en un par de sitios. Vamos a ver como poder añadir un nuevo campo en la ficha de producto de Prestashop, en nuestro caso el campo a añadir será un editor de texto en el que podremos añadir gran cantidad de contenido, campos como el de la descripción y la descripción corta.
Tenemos que modificar una serie de archivos, así que vamos por partes. Primero abriremos el archivo classes/Product.php. Al principio del archivo veréis que se han declarado un montón de variables que se utilizarán más tarde, asi que lo que hacemos es crear una nueva en la que guardaremos el contenido del campo, así que añadimos junto a las demás public $nombreDelCampo;
Siguiendo en el mismo archivo tenemos que buscar el siguiente texto public static $definition = array(, se trata de un array en el que están declarados los campos de los productos. En mi caso me interesa duplicar el campo de descripción, así que si buscáis debajo del comentario /* Lang fields */ encontrareis el campo en cuestión, lo que haremos será seleccionar la linea:
'description' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isString'),
Y duplicarla cambiándole el nombre, de modo que se quede como sigue:
'description' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isString'), 'nombreDelCampo' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isString'),
Ya tenemos retocada la clase de forma que Prestashop reconozca este nuevo campo que hemos creado, ahora toca crear el cuadro de texto que nos permitirá añadir o modificar contenido. Para ello abrimos el archivo adminFolder/themes/default/template/controllers/products/informations.tpl. En este tpl nos econtramos con el formulario que vemos en la página de producto. Como en la clase hemos duplicado la descripción aqui lo que vamos a hacer es lo mismo, vamos a buscar el cuadro de texto de la descripción y vamos a duplicarlos. Lo que buscamos es lo siguiente:
{include file="controllers/products/multishop/checkbox.tpl" field="description" type="tinymce" multilang="true"} ({l s='Appears in the body of the product page'})
{include file="controllers/products/textarea_lang.tpl" languages=$languages input_name='description' input_value=$product->description }
Lo duplicamos, cambiamos la parte que nos interesa y lo ponemos justo debajo (mucho ojo a la estructura que fijaos que estamos en una tabla). *Muy importante* Es indispensable que el campo que añadáis esté dentro del formulario (
Juan Pablo
Hola,
Es un tutorial muy útil, he seguido todos los pasos pero tengo un problema. Yo he añadido un campo que se llama InformacionNutricional a los productos, despues de hacer todo lo que pone aquí, funciona y me aparece el nuevo campo, el problema viene cuando escribo algo en el, que no me guarda el contenido, yo escribo algo, le doy a guardar y me sale el mensaje de guardado correctamente, pero el campo vuelve a estar vacio, no lo guarda.
Sabes porque puede ser??
Gracias!
dwalins
Hola Juan Pablo,
Me alegra mucho que te sea de utilidad, para mi sin duda ha sido uno de las modificaciones que más he tenido que volver a hacer una y otra vez. De primeras se me ocurre que quizas el campo no se haya creado bien en la base de datos o tal vez el nombre no sea el mismo y por eso no lo reconoce. Verificalo y me dices por si no es eso ver que puede ser.
Un saludo!
Juan Pablo
Ya esta! en uno de los archivos que había que editar, al poner el nombre del nuevo campo se me habia colado una letra.. lo he arreglado y ya funciona!
Muchas gracias! 🙂
dwalins
Estupendo! Me alegra que haya tenido tan fácil solución 😀
Espero seguir viendote por aqui!
Un saludo!
Luis Fernandez
Hola , pero cuando vayamos a hacer una importación de producto a la tienda , dispondremos de la columna en el fichero de importar?
un saludo
dwalins
Hola Luis,
La verdad que es una buena pregunta y he tenido que comprobarlo. Con esta modificación no tenemos el campo disponible en el menú de importación de Prestashop. He estado mirando y no parece muy complicado añadir esta funcionalidad, voy a probar una cosa y os comento el resultado.
Un saludo
Rafa
Hola dwalins,
me pregunto por esta implementación también, pues estoy a punto de exportar la tienta a servidor online, y no se si todo funcionará bien y permanecerán los cambios en esa tabla.. no se si me explico.. gracias, un saludo!!
dwalins
Hola Rafa, si te llevas los archivos y la tabla a tu servidor online estos cambios van a permanecer sin ningún problema. Los archivos solo tienes que subirlos donde corresponde y al exportar e importar el sql ya llevas incluida las modificaciones que hayas hecho. Todo te va a funcionar perfectamente 😉
Rafa
Hola, gracias por las ayudas prestadas..
funciona en la version 1.6 de prestashop?
dwalins
Hola Rafa, me alegra que os sea de utilidad. Pues si esta modificación también funciona para la versión 1.6, puedes seguirlo paso a paso sin ningun problema.
Rafa
Gracias por la rápida respuesta, en cuanto pueda lo pruebo y comento, gracias!
Juan Pablo
Hola! una pregunta que no viene al tema, pero no se donde ponerla. ¿Hay alguna manera de exportar datos como clientes, productos y categorías desde una web con Prestashop 1.4.8 a una web con Prestashop 1.6??
Juan Pablo
Hola Dwalins, estoy probando poner este campo en prestashop 1.6.0.9 y en el paso de modificar el informations.tpl no encuentro ese cogido, es diferente en esta parte, por lo menos a mi, utilizo un tema diferente al por defecto pero no tiene nada que ver ¿no? Prefiero no avanzar ni tocar nada hasta que me puedas decir algo.
Gracias!
dwalins
Hola Juan Pablo, efectivamente en esta versión ya no está apareciendo de esa forma, se han pasado a bootstrap y ya no hay una tabla que contenga todo. En esencia sigue siendo lo mismo, se hace un include en este caso de un textarea. Si abres el archivo verás que sobre la linea 331 tienes el label de la descripción y algo más abajo el mismo include, ahora está rodeado por un div en lugar de un td.
Debes poder modificarlo sin problemas orientandote con los pasos que hay aqui, de todas formas voy a intentar actualizar esta información.
Un saludo!
Juan Pablo
No me acaba de salir bien 🙁 podrias actualizar la informacion de este post??
Gracias!
dwalins
Hola Juan Pablo,
He publicado una nueva entrada con los pasos actualizados,échale un vistazo.
Un saludo!
Juan Pablo
Queria poner un comentario aparte, no una respuesta al anterior, perdon por el error..
Vuelvo a poner aqui la pregunta: ¿Hay alguna manera de exportar datos como clientes, productos y categorías desde una web con Prestashop 1.4.8 a una web con Prestashop 1.6??
dwalins
Hola Juan Pablo,
Tienes varias opciones, si tienes posibilidad de actualizar a alguna versión superior puedes usar el propio exportador que lleva prestashop, si no puedes, hay un modulo llamado mousiq (puedes pillarlo aqui) que te dejaba exportar y es compatible tanto con 1.4.x como con 1.5.x. Si por alguna razon esto no te sirviera siempre puedes llevarte la parte que te interese de la base de datos para importarla donde quieras, aunque esto es algo más delicado, pero si te manejas bien no hay ningún problema.
Un saludo
Juan Pablo
La verdad esque intale ese modulo que saque del foro de prestashop, pero no entiendo como funciona y me parece que es para exportar productos, no lo se muy bien la verdad. Para hacerlo mediante la base de datos como seria??
Juan Pablo
Ya he entendido como funciona y si, solo me deja exportar productos, para eso me ha sido útil, pero necesito los clientes también, que son unos cuantos. Cuando puedas podrías explicarme como hacerlo a través de base de datos?? Gracias!
dwalins
Hola Juan Pablo, vamos a probar una cosa antes, he encontrado un módulo que exporta los clientes de Prestashop, no lo he probado pero parece cumplir justo con lo que necesitas, puedes descargarlo del foro oficial. Pruébalo y me comentas que tal, porque si te quitas tener que directamente tocar la base de datos mejor que mejor.
Un saludo!!
Juan Pablo
Probado, es lo que necesitaba, pero tiene un problema bastante gordo.. no exporta las contraseñas. No he visto que nadie ponga nada sobre eso en el foro, pero bueno intentare modificar el modulo en el ftp para que exporte contraseñas tambien. Si tienes algo que me sirva de ayuda avisame como siempre haces 🙂
Si consigo hacerlo te digo algo.
Gracias por tu ayuda!
Juan Pablo
Conseguido! era bastante sencillo el cambio, los passwords estan encriptados, me daba miedo que no funcionase por el prestashop 1.6, pero si, funciona.
Gracias!!
dwalins
Hola Juan Pablo, me alegra que te haya funcionado. Sin duda es raro que no te exportara los passwords, porque sin ellos los clientes no iban a poder iniciar sesión.
Un saludo!
Juan Pablo
Si la verdad, pero ahora tengo otro problemilla, que no me rompere la cabeza para solucionarlo, te lo comento y si sabes algo perfecto. Cuando exportas los passwords estan encriptados y al importarlos no los desencripta, me explico:
El password del cliente es «contraseña1», prestashop lo encripta y cuando exportas la contraseña es «234jdushbu12n3pih2nsi» por ejemplo, a la hora de importar, el password del cliente sera «234jdushbu12n3pih2nsi» y no el suyo..
Pero bueno, que vayan entrando y le del a «¿Olvido su contraseña?» y la cambien. No? jaja
Gracias
dwalins
No te preocupes que eso no es un problema, está funcionando correctamente y no van a tener que cambiar nada. Cuando desde prestashop guardas una contraseña lo que hace es coger ese valor lo concatena con la cookiekey y lo encripta, entonces lo que se guarda en la base de datos es esa cadena codificada para que no puedar ser vista por nadie, entonces cuando el usuario va a iniciar sesión introduce su clave y se repite el proceso, se concatena y se codifica para ser comparada con la que hay almacenada en la base de datos, si son iguales puedes acceder.
Por este motivo es por el que no puedes ver nunca la contraseña de alguien y si la pierde tiene que crear una nueva, porque al estar encriptado no hay forma de ver el valor aunque tengas acceso a la base de datos.
Así que ojala todo los problemas fueran como este 😉
Añadir campos a la ficha de producto en Prestashop 1.6 | Dwalins
[…] Esta es posiblemente una de las entradas más útiles que he publicado, la he usado muchas veces y estoy seguro que voy a seguir usandola muchas veces más. Con la nueva versión de Prestashop, la 1.6.X la forma en la que está construida la plataforma cambia un poco y por eso creo necesario una revisión de este tutorial para adaptarlo a los nuevos tiempos. Voy a dejar intactas las partes que aún son igual de válidas y me voy a centrar en modificar unicamente lo que ha cambiado. Si estás buscando esta misma modificación pero para la versión 1.5.X puedes encontrarla aqui. […]