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.

Captura

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 …

Captura1
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}
{$category->extra_description}
{/if}

En esta imagen podemos observar el resultado:

Captura3

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.

Comentarios en Campo extra en categoría Prestashop 1.6 o inferiores:

  1. Jesus |

    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

    Responder
    1. David Gutiérrez |

      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,

      Responder
  2. Viste con Amelia |

    Mil gracias por este post, me ha sido de gran ayuda. Acabo de aplicarlo en mi web para optimizar el SEO. Saludos!!

    Responder
  3. accesorios para mujer |

    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

    Responder
    1. David Gutiérrez |

      Hola Muchas Gracias Hernando!

      Responder
  4. 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

    Responder
  5. Jesús |

    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.

    Responder
    1. David Gutiérrez |

      Muchas gracias Jesús! Me alegro que te haya servido y gracias por el aviso!

      Responder
  6. cristian |

    excelente articulo me sigue funcionando
    tengo prestashop 1.6.1.16
    muchas gracias

    Responder
    1. David Gutiérrez |

      Gracias Cristian!

      Responder
  7. Eva |

    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?

    Responder
  8. Jose |

    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.

    Responder
  9. Jose |

    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!

    Responder
    1. David Gutiérrez |

      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,

      Responder
  10. alfonso |

    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!!!

    Responder
    1. David Gutiérrez |

      Muchas Gracias Alfono! me alegro que te haya servido!

      Responder
  11. Marcos |

    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.

    Responder
    1. David Gutiérrez |

      Me ha comentado otro chico que descargando el archivo no tienes porque tener problemas, pruebalo!

      Responder
  12. Abel |

    Si he borrado ya en varias ocasiones el fichero class_index.php y también he borrado la caché desde parámetros avanzados/Rendimiento

    Responder
    1. David Gutiérrez |

      Prueba a descargarte el fichero y sustituir todo.

      Saludos,

      Responder
  13. Abel |

    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?

    Responder
    1. David Gutiérrez |

      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…

      Responder
  14. Abel |

    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?

    Responder
    1. David Gutiérrez |

      En la columna extra_description, que es la que has creado antes no?

      Responder
  15. Abel |

    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}

    Responder
    1. David Gutiérrez |

      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

      Responder
  16. Abel |

    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.

    Responder
    1. David Gutiérrez |

      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

      Responder
  17. Abel |

    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

    Responder
    1. David Gutiérrez |

      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!

      Responder
  18. Jose Suarez Ochoa |

    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);
    }

    }

    Responder
  19. Sergio |

    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!

    Responder
    1. David Gutiérrez |

      Me alegro que te haya funcionado!

      Saludos

      Responder
  20. Joana García |

    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.

    Responder
    1. David Gutiérrez |

      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

      Responder
  21. César |

    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

    Responder
    1. David Gutiérrez |

      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

      Responder
  22. Cesar |

    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 🙂

    Responder
  23. Ana |

    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 😉

    Responder
    1. David Gutiérrez |

      Ana,

      Perdona no había visto el comentario. Si sería ponerlo en el category.tpl abajo y ya lo tendrías.

      Saludos

      Responder
  24. Ana |

    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

    Responder
  25. Miguel |

    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

    Responder
    1. David Gutiérrez |

      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

      Responder
  26. Pau |

    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

    Responder
    1. David Gutiérrez |

      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

      Responder
  27. Javier |

    PERFECTO !!! Ahora si.
    Faltaba eliminar el archivito de la caché.

    Muchas gracias David.

    Responder
    1. David Gutiérrez |

      De nada Javier, cualquier duda me dices.

      Saludos

      Responder
  28. Javier |

    David, no he eliminado ningún archivo.

    De que directorio? Es para comprobar que está.

    Gracias por contestar

    Responder
    1. David Gutiérrez |

      Se encuentra en la carpeta cache de prestashop.

      Saludos.

      Responder
  29. Javier |

    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

    Responder
    1. David Gutiérrez |

      Has eliminado el archivo class_index.php?

      Saludos

      Responder
  30. David Gutiérrez |

    En principio tendría que funcionaros sin ningún problema. Si puedes ser más concreto con el problema lo revisamos.

    Saludos.

    Responder
  31. Sebastián |

    Consegusite solucionar el por qué no se guarda Maria? Tengo el mismo problema, estoy utilizando Prestashop 1.6.1

    Responder
  32. Maria |

    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;

    Responder
  33. bazar |

    Hola David, muchas gracias por compartir tus conocimientos, me gustan mucho los artículos de tu web, felicidades y a seguir así

    Responder
  34. Juan Carlos |

    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!!

    Responder
    1. David Gutiérrez |

      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.

      Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Nuestra cámara Reflex