Campo extra en categoría Prestashop 1.6 o inferiores
Estas semanas me estoy leyendo este libro sobre prestashop, donde estoy sacando bastante información. En este post os quiero explicar como añadir un campo extra en las categorías, yo lo que quiero añadir es un textarea con funciones de negrita,subrayado…, pero este tutorial os valdrá para otros campos, como un input simple.
Empezamos, primero de todo nos dirigimos a \override\classes\Category.php(si no existe lo creáis), así no modificaremos la clase original y para futuras actualizaciones de prestashop no perderemos lo que vamos hacer. Pero se podría hacer perfectamente en classes\Category.php, pero de una manera diferente.
En el archivo Category.php añadiremos esto:
class Category extends CategoryCore { //put your code here public $extra_description; public function __construct($id_category = null, $id_lang = null, $id_shop = null) { self::$definition['fields']['extra_description'] = array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isString'); parent::__construct($id_category, $id_lang, $id_shop); } }
Lo que estamos añadiendo es el campo extra_description, en la array padre que es Category.php, de classes.(si vais alli dentro de fields, podreis comprobar tiene un array, esta es la que estamos incluyendo nuestro extra_description)
Ahora vamos a nuestro phpmyadmin, buscamos la tabla ps_category_lang y en ella nos dirigimos a estructura y añadimos un campo nuevo llamado extra_description tipo TEXT, guardamos y ya podemos cerrar phpmyadmin.
Nos dirigimos ahora hacia \controllers\admin\AdminCategoriesController.php y añadiremos nuestro textarea,el código de abajo lo tendréis que añadir debajo del textarea anterior(podeis buscar ctrl+f o cmd+f y buscar textarea, si os fijais lleva una estructura cada campo de array(), entonces nuestro nuevo array lo metemos detras de la array(description), ), con el código siguiente:
array( 'type' => 'textarea', 'label' => $this->l('Extra Description:'), 'name' => 'extra_description', 'autoload_rte' => true, 'lang' => true, 'rows' => 10, 'cols' => 100, 'hint' => $this->l('Invalid characters:').' <>;=#{}' ),
Con esto ya tenemos en nuestro panel de administración nuestro textarea con funciones de subrayar, negrita …
Ahora solo nos queda mostrarlo entonces nos dirigimos a \themes\default\category.tpl y copiamos el siguiente código,donde queramos mostrar este nuevo campo:
{if $category->extra_description}
{/if}
En esta imagen podemos observar el resultado:
Espero que os haya gustado, cualquier cosa no dudéis en comentar. Os dejo los archivos para que los podáis descargar
Saludos y gracias.
Buenas David
He seguido todos los pasos, pero no hay manera de que guarde el campo en la base de datos, lo pinta bien en el admin pero no guarda. He descargado el controller, pero claro estoy usando PS 1.7 y casca, como es natural.
¿Hay alguna forma de que funcione en el 1.7?
Muchas gracias
Hola Jesús,
Estos pasos son para la versión 1.6 o inferiores, Prestashop a partir de la versión 1.7 ha cambiado completamente.
Saludos,
Mil gracias por este post, me ha sido de gran ayuda. Acabo de aplicarlo en mi web para optimizar el SEO. Saludos!!
Hola David,
Funciona PREFECTO, el error fue mio de apreciación, muchas gracias por tu aporte.
Ya lo estoy parametrizando en mi tienda.
Muchas gracias,
Hernando G
Hola Muchas Gracias Hernando!
Hola David,
Esta solución se ve genial pero no me funciona y tengo un erro que me tumbo la tienda.
En mi Prestashop 1.6.1.15, tan pronto coloco las líneas de código del Category.php , mi tienda muestra error HTTP 500, mi pregunta es, en que parte debo colocar este código?, es antes de la primera línea?, es al final del archivo?, yo he probado en varias ubicaciones y siempre me sale el mismo error 500 y no se como solucionarlo.
Gracias
Gracias
Hola, muchas gracias por el tutorial es justo lo que buscaba, me ha sido de gran utilidad, solo un comentario. He seguido al pie de la letra sus instrucciones y como a otros tambien he tenido el problema que no me guardaba los cambios del extra description aun habiendo borrado el class_index.php y borrado cache.
Al final he encontrado el problema, En el codigo que pones para introducir al archivo Category.php, no incluyes la etiqueta de inicio del archivo <?php, por eso el fichero no funciona. En el archivo de descarga si esta correcto.
saludos.
Muchas gracias Jesús! Me alegro que te haya servido y gracias por el aviso!
excelente articulo me sigue funcionando
tengo prestashop 1.6.1.16
muchas gracias
Gracias Cristian!
Buenas tardes, he seguido todos tus pasos.. y se ha creado el campo extra en el back office de la categoría.. también he modificado el archivo del theme que utilizo… pero ahora no puedo entrar a la categoría.. ni a los productos productos, me da un error 500. ¿qué se supone que he hecho mal?
Gracias David,
Si que tengo canonical, así que lo dejaré tal y como ha quedado.
Muchas gracias, me ha sido de gran ayuda este post.
Buenos tardes,
Me ha costando un poquito pero al final he conseguido siguiendo su tutorial activar categorías extendidas, mil gracias.
Pero creo que hay algo que no ha debido de quedar bien del todo, le cuento:
Tanto descripción corta como extendida me aparece en todas las páginas de la categoría, es decir si la categoría tiene 10 páginas, me aparece en las 10.
No se si es así o he hecho al mal, yo creo recordar que antes unicamente mostraba la descripción corta de la categoría en la página 1, en el resto no se mostraba.
No es algo que me moleste, lo que no se es si influirá en temas de Seo, si tiene fácil solución y me puede indicar se lo agradecería.
Gracias!
Hola Jose,
En principio por temas seo no tendría ningún problema si le has dicho que la canonical es la página principal. Ya que unicamente debera indexar la página principal, es decir, la canonical. Por ejemplo si tuvieras indexadas páginas de tu sitio podrías verlo con site:dominio.com, aquí te salen todas las páginas que tiene tu sitio. Si hay alguna que sea dominio.com/categoria?p=2 … es que google esta indexando, entonces puede ser que no tengas las canonical puestas o que Google aun no lo ha visto.
Si necesitas ayuda puedo hacer un tutorial.
Saludos,
Buenas, funciona perfectamente gracias!!!
Os aconsejo que os bajéis el archivo colgado y vais copiando el código de ahí, la primera vez lo he hecho siguiendo el tutorial y no me guardaba en la bbdd ni me mostraba en el frontend.
Gracias!!!
Muchas Gracias Alfono! me alegro que te haya servido!
David,
Tengo el mismo problema, escribo en la caja de extra descripcion en el backoffice en la categoria y no se salva
Le doy a salvar pero vuelvo a entrar y no esta.
Que version tienes tu?
Felicidades por el post.
Me ha comentado otro chico que descargando el archivo no tienes porque tener problemas, pruebalo!
Si he borrado ya en varias ocasiones el fichero class_index.php y también he borrado la caché desde parámetros avanzados/Rendimiento
Prueba a descargarte el fichero y sustituir todo.
Saludos,
Ah ok David, es que estaba mirando mal la tabla, ya que la correcta es la ps_category_lang verdad? Ahi veo que en la columna extra_description está vacía, no se ha guardado nada.
Como lo puedo arreglar David? Que paso he hecho mal?
Has probado de limpiar cache? yo me he descargado el fichero de descarga que hay al final del tutorial y me ha funcionado correctamente 🙁
No entiendo porque no te va a ti…
Perdona David, que mis conocimientos en todo esto son un poco escasos. Cuando voy a la tabla ps_category para ver si está guardado correctamente, en que apartado se mira esto una vez dentro de la tabla ps_category?
En la columna extra_description, que es la que has creado antes no?
Hola David, no entiendo a que te refieres si está en la base de datos? el que?
Si que he borrado todo el cache a parte de eliminar el class_index.php
Puede ser porque he puesto al final de todo del archivo category.tpl el siguiente código?
{if $category->extra_description}
{$category->extra_description}
{/if}
En la base de datos es donde almacena todos los datos, deberias ir a la tabla ps_category y ver si se guarda correctamente ahi.
Si se guarda es algo del fichero .tpl, puede ser cache, intenta eliminarla en las preferencias.
Saludos
Muchas gracias David,
Estoy siguiendo todos tus pasos, y ya me aparece en las categorías el campo «extra description» para introducir el texto. Pero todo lo que escribo en este nuevo campo, cuando vuelvo a entrar no hay nada.
He mirado el post que otros usuarios tenían el mismo problema, y he borrado el archivo de cache «class_index.php» tal y como indicas, pero sigue sin quedarse grabado lo que escribo.
Has probado de mirar si esta en la bbdd? prueba también a limpiar todo el cache a parte de eliminar el class_index.php
Buenas tardes,
En primer lugar, muchas gracias por el post David !!
Me gustaría saber como poder incorporar texto (descripción) diferente en cada categoría de Prestashop, para poder describir con detalle de lo que trata cada categoría y que además sirva para el posicionamiento de SEO.
No sé si esto que comentas del «campo extra en la categoría», se refiere exactamente a lo que necesito.
He leído en otros post sobre el módulo «content box», pero solo sirve para la página de inicio.
Utilizo la versión 1.6.1.2 de Prestashop
Así es Abel, con esto no te haría falta utilizar ningún modulo, si necesitas cualquier cosa para tu tienda me dices o por temas de seo.
Actualmente estoy llevando un ecommerce así que cualquier cosa me dices!
El problema esta que al principio de Category.php tienen que agregar <?php. Quedaria asi el fichero:
self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
parent::__construct($id_category, $id_lang, $id_shop);
}
}
Buenas, he seguido paso a paso lo que has comentado y funciona a la perfección con Prestashop 1.6.1.3 !!
Estaba buscando una manera de añadir contenido para google en las categorías y esto sirve de fábula!
MUCHAS GRACIAS
Saludos David!
Me alegro que te haya funcionado!
Saludos
Hola David!!
Primero quiero darte las gracias por el trabajo que te has tomado creando ese campo. Menuda ayuda!!!
Quiero decirte aunque que me ha costado lo mío (no soy programadora ni nada parecido) he podido instalarlo y que funcione correctamente, pero se me ha generado una duda:
¿Cuando haya alguna actualización nueva de prestashop, todas esas modificaciones seguirán ahí? Me daría algo si en la próxima actualización me encuentro que no ha servido de nada todo lo que he hecho.
Muchísimas gracias por tu tiempo.
Un saludo.
Hola Joana,
El botón de actulizar en prestashop es bastante peligroso. De todas maneras si lo haces en el controlador directamente si se borrara. Si lo haces dentro de la carpeta /override/, nada que hagas en esta carpeta se borrara.
Lo que se suele hacer es poner todo en override.
De todas maneras te recomiendo tener cuidado con el botón actualizar
Hola David, lo he intentado todo y nada, no se guarda lo que escribo en el campo de descripción estra dentro del backoffice, no tengo ningun archivo en cache/class_index.php así que lo he creado, despues desactive la cache y la volvi a activar y por ultimo borre el archivo creado anteriormente, pero nada no funciona, he hecho todo pero seguramente estaré fallando en algo, alguna sugerencia???
Mil gracias.
César
No entiendo porque no te sale el archivo class_index.php, debería salirte :S Podrías empezar los pasos de nuevo o miramos de alguna manera que te pueda ayudar.
Saludos
Hola David, llevaba tiempo buscando está solución y menos mal que he dado con un web y este enlace desde el foto de Prestashop, el caso es que he creado el campo de descripción extra en el backend pero cuando relleno algo de texto y le doy al guardar no me guarda lo que habia puesta.
Tengo el mismo problema comentado arriba no tengo ningun archivo en cache/class_index.php, utilizo PS 1,6.0.9 con un tema diferente al default y tengo la cache activada, alguna solución??, gracias por este gran tuto 🙂
Perdona David, estoy un poco espesa, me he contestado sola a la pregunta tonta que he hecho nada más abrir el archivo category.tpl
De nuevo felicidades por el artículo 😉
Ana,
Perdona no había visto el comentario. Si sería ponerlo en el category.tpl abajo y ya lo tendrías.
Saludos
Buenas tardes,
lo primero felicidades por el post.
Tengo una duda, porque yo no quiero que la extra descripción me aparezca debajo de la descripción normal, si no debajo de los productos de esa categoría.
Tendría que hacerlo como módulo nuevo, no como ampliación del que ya existe?
Gracias y un saludo
Hola!
Muchas gracias por este tutorial
Mi problema es el mismo que comentan, escribo en el campo extra_description de la categoría pero cuando vuelvo a entrar no hay nada, no se guarda. Mi problema es que no tengo en cache ningún archivo class_index.php por lo que no se que hacer
Debería salir-le un archivo en cache/class_index.php en todos los prestashop esta. Si no prueba a crear el cache por si lo tienes desactivado o algo, pero ya le digo es raro.
Saludos
Buenas! He seguido tu tutorial y tengo un problemilla…. no me crea el campo textarea en el backend.
La versión de presta es 1.6.1.4
En el front end si que parece que ha creado algo ya que ha creado una separación donde yo le he asignado el camp extra_description
Es raro, porque esta probado en todas las versiones y me ha funcionado, realiza todos los pasos de nuevo a ver si te has dejado algo.
Saludos
PERFECTO !!! Ahora si.
Faltaba eliminar el archivito de la caché.
Muchas gracias David.
De nada Javier, cualquier duda me dices.
Saludos
David, no he eliminado ningún archivo.
De que directorio? Es para comprobar que está.
Gracias por contestar
Se encuentra en la carpeta cache de prestashop.
Saludos.
Hola David, excelente aportación, pero a mi me pasa igual, no consigo que se guarde en la bbdd.
Y entonces en la pagina da un error:
Notice: Undefined property: Category::$extra_description in /home/floresveronica/public_html/tools/smarty/sysplugins/smarty_internal_templatebase.php(171) : eval()’d code on line 98
Gracias, Javier
Has eliminado el archivo class_index.php?
Saludos
En principio tendría que funcionaros sin ningún problema. Si puedes ser más concreto con el problema lo revisamos.
Saludos.
Consegusite solucionar el por qué no se guarda Maria? Tengo el mismo problema, estoy utilizando Prestashop 1.6.1
Todo bien, pero no logro que se guarde lo que escribo en la descripción extra, no da ningún error pero cuando vuelvo a entrar en la categoría lo que he escrito no aparece, vamos que está en blanco como si no he escrito nada. Sabrías decirme que me está pasando.
Un saludo;
Hola David, muchas gracias por compartir tus conocimientos, me gustan mucho los artículos de tu web, felicidades y a seguir así
Hola buenas noches!!
Excelente artículo!! Pero no me quedado muy claro el último paso. Dónde hay que copiar exactamente el código siguiente? En que línea?
{if $category->extra_description}
{$category->extra_description}
{/if}
un saludo!!
Hola Juan Carlos, lo tendrías que copiarlo en el category.tpl en cualquier parte por ejemplo lo puedes poner debajo de la otra descripción o debajo de la lista de los productos, cualquier zona del category.tpl valdría. Solamente te tienes que ir guiando por las etiquetas html.
Cualquier cosa me dices, espero que te haya solucionado la duda.