Añadir campos a la ficha de producto en Prestashop 1.6

publicado en: Prestashop, Tutoriales | 66

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.

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' => 'isCleanHtml'),

Y duplicarla cambiándole el nombre, de modo que se quede como sigue:

'description' => 				array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml'),
'nombreDelCampo' => 				array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml'),

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:

<div class="form-group">
        <div class="col-lg-1"><span class="pull-right">{include file="controllers/products/multishop/checkbox.tpl" field="description_short" type="tinymce" multilang="true"}</span></div>
        <label class="control-label col-lg-2" for="description_short_{$id_lang}">
            <span class="label-tooltip" data-toggle="tooltip" title="{l s='Appears in the product list(s), and at the top of the product page.'}">
                {l s='Short description'}
            </span>
        </label>
        <div class="col-lg-9">
            {include
                file="controllers/products/textarea_lang.tpl"
                languages=$languages
                input_name='description_short'
                class="autoload_rte"
                input_value=$product->description_short
                max=$PS_PRODUCT_SHORT_DESC_LIMIT}
        </div>
    </div>

Lo duplicamos, cambiamos la parte que nos interesa y lo ponemos justo debajo. *Muy importante* Es indispensable que el campo que añadáis esté dentro del formulario, si no los cambios no se guardarán cuando guardéis. Así que justo debajo añadimos nuestra modificación:

<div class="form-group">
        <div class="col-lg-1"><span class="pull-right">{include file="controllers/products/multishop/checkbox.tpl" field="description_short" type="tinymce" multilang="true"}</span></div>
        <label class="control-label col-lg-2" for="description_short_{$id_lang}">
            <span class="label-tooltip" data-toggle="tooltip" title="{l s='Appears in the product list(s), and at the top of the product page.'}">
                {l s='Nombre del Campo'}
            </span>
        </label>
        <div class="col-lg-9">
            {include
                file="controllers/products/textarea_lang.tpl"
                languages=$languages
                input_name='nombreDelCampo'
                class="autoload_rte"
                input_value=$product->nombreDelCampo
                max=$PS_PRODUCT_SHORT_DESC_LIMIT}
        </div>
    </div>

 

Con esto ya hemos conseguido que en la ficha del producto de Prestashop nos aparezca un nuevo campo en el que podemos añadir el contenido que necesitemos.

Ya nos queda poco.

El campo que acabamos de crear obviamente no viene por defecto en Prestashop, así que no han pensado en dejarnos un campo libre para usarlo, por lo tanto necesitamos entrar a nuestro gestor de la base de datos y añadir nosotros ese campo. Tenéis que buscar la tabla product_lang, por defecto el prefijo de la tabla suele ser ps_, con lo cual buscaríais ps_product_lang, pero puede que tenga otro prefijo diferente (yo por seguridad le suelo cambiar el prefijo). Así que nos vamos a la tabla y modificamos la estructura añadiendo al final un campo que se llame como nuestra variable. Con esto ya tendremos un hueco reservado para poder añadir nuestro texto.

Por último vamos a añadir en la ficha del producto(front office) nuestra variable para que todos puedan ver el contenido que hemos añadido. Por lo tanto nos vamos a la carpeta del theme que tengamos activo y buscamos el archivo product.tpl. Para la versión 1.5.X añadí el nuevo campo en la sección de tabs, en esta ocasión he decidido añadirlo en la parte superior (por cambiar un poco), asi que busco donde está la descripción corta

{$product->description_short}

Y por ahi no muy lejos (dependiendo de la plantilla que tengais) me adapto un poco al html que haya y añado mi nuevo campo

{$product->nombreDelCampo}

Listo! Con esto hemos acabado por fin. Ya tenemos nuestro campo editable en la ficha de producto de Prestashop.

En este caso la modificación requiere tocar bastante más código del que os tengo acostumbrados, pero creo que es una modificación muy útil y que seguro que la habréis necesitado en algún momento.

*Muy Importante* Antes de hacer cualquier cambio aseguraros de hacer copias de seguridad de TODO Estamos tocando en archivos y sitios que pueden hacer que se rompa todo y vuestra tienda se quede como un ladrillo. Os recomiendo que estos cambios los lleveis a cabo usando overrides de forma que sea todo más seguro y nos evitemos problemas con actualizaciones.

Como siempre espero que os haya sido de utilidad. Espero vuestros comentarios, dudas y sugerencias!

66 comentarios

  1. Juan Pablo

    Hola Dwalins! Como siempre es perfecto y funciona 🙂 Yo lo he puesto abajo, queda mejor en mi tienda. De nuevo gracias por tu trabajo!

    Tengo una duda a ver si me puedes ayudar:
    El tema que utilizo, la pagina de producto esta dividida en dos columnas, una con la foto del producto y otra con toda la información sobre el. El caso es que esto queda mal cuando la descripción es muy larga, ya que la imagen ocupa por ejemplo 500px de largo en la columna izquierda y en la derecha el conjunto de todos los datos del producto (descripción corta, precio, descripción, etc) ocupan por ejemplo 1000px de largo, entonces en la columna izquierda tengo 500px de pagina en blanco, y no queda muy bien.

    Como reestructurar la pagina me parece muy complicado para mi, he pensado en intentar poner en la parte de abajo de información de producto, en las tabs, un botón que si pasa de x numero de caracteres ponga «leer mas» y si clicas se desplege el resto del texto. No se si me he explicado bien. Y esto me esta resultando mas difícil de lo que creía. Sabes alguna manera fácil de hacerlo? o me podrías dar alguna ayuda o consejo?

    Un ejemplo de lo que explico en mi web: http://www.nutrienda.com/proteinas/58-whey-gold-2270-gr.html

    Muchas Gracias!

    • dwalins

      Me alegra que te funcione.
      En cuanto a lo otro que comentas entiendo el problema. Tienes varias formas de solucionarlo, una seria mostrar al lado de la foto la descripción corta, que básicamente la utilidad es esa que no descuadre mucho y ya abajo mostrar la completa. Esta alternativa como ves es simplemente rellenar la información en su cuadro correspondiente, puede ser que tengas que editar el TPL para que muestre la descripción corta y mas abajo la completa.

      Si tienes muchos productos esto puede ser un problema, sobre todo si en la descripción corta no tienes nada y vas a tener que editar un monton, para ese caso me plantearía usar alguna función que te limitara el número de palabras y añadiera un enlace de leer más, esto ya es más complicado que la solución anterior pero es tambien una buena posibilidad.

      Como última alternativa podrias tal vez hacerlo mediante la base de datos, aunque andar trasteando con la base de datos al final puede dar algún que otro disgusto (aunque con tu copia de seguridad correspondiente no hay porque temer)

      ¿Que forma te parece mejor para tu caso?

    • Juan Pablo

      Me interesaría la función con el leer más, por estética y porque la función se pone en product.tpl y ya funcionaria para todos los productos no? La base de datos prefiero no tocarla y la primera opción que dices de la descripción corta no la he entendido muy bien, dices que la descripción corta que sale en la columna derecha junto con los otros datos, ponerlo en la izquierda junto con la foto? si es eso ya probé algo parecido pero cuando pones algo en la columna izquierda no aparece debajo de la foto, si no que aparece al lado y entonces la columna derecha se desencuadra y se va hacia abajo… un poco difícil de explicar si no lo ves jaja.

      Por eso me iría bien la solución del leer mas, lo iré probando porque no tengo ni idea de como se hace tal función si puedes ayudarme con eso perfecto 🙂

      gracias!

    • dwalins

      Hola Juan Pablo,

      A lo que me refiero es a algo asi, http://demo.prestashop.com/en/?view=front, si te fijas a la derecha de la foto hay un pequeño texto «100% cotton double printed dress…» y abajo puedes encontrar la tab Más que tendria todo el texto. Ese primer texto pequeño es de la descripción corta del producto y el que aparece abajo es ya la descripción completa, rellenandolo de esta forma solo habría que añadir un botón de ver más, que lo pondrías en product.tpl y ya te aparecería en todas, únicamente habria que ver que uso le estás dando ahora mismo a la descripción corta. En versiones anteriores este botón venía asi por defecto, pero ahora tendrías que ponerlo si usas la plantilla por defecto, si ya tienes otra no se como lo tendrás.

      Esta función es quizás la más sencilla a la hora de hacerla y luego de manterla, asi ante cualquier cosa puedes tocar tu tranquilamente. Echa un vistazo y me dices.

      Un saludo!

    • dwalins

      Hola Juan Pablo,

      Me alegra ver que lo has solicionado ¿al final lo has arreglado con jquery por lo que veo no? Si el texto es demasiado corto lo unico que no deberia de ampliarse mucho más, pero la funcionalidad debe de seguir tal cual.

      Un saludo!

    • Juan Pablo

      Si, Puse la función para que apareciera en el contenido de las pestañas del product.tpl, en mi caso mi tema tiene esto en un archivo a parte llamado tabs.tpl pero vamos, que es lo mismo, y funcionó.

      La funcion es la siguiente, fui a otra tienda que tengo, donde sale un «leer mas» y fui al archivo de esa tienda que lo contenia y basicamente lo use de guia para hacerlo en la nueva tienda:

      {if strlen($product->description) > 600}
      {$product->description|truncate:600}
      {$product->description}
      {l s=’Leer Mas’}
      {l s=’/Mostrar Menos’}
      {else}
      {$product->description}
      {/if}

      No se si se vera bien, la dejo aquí por si alguien tiene el mismo problema.

      Gracias!

    • Juan Pablo

      Nose porque pero faltan partes de codigo… imagino que tu sabras porque xD por ejemplo el yo lo he puesto pero no aparece en el comentario

    • Juan Pablo

      el ! que desaparece cada vez que lo pongo xD perdon por tanto comentario

    • dwalins

      Por lo que veo es mi filtro de spam que está cambiando tu comentario y quitando partes que considera que pueden ser peligrosas, pásamelo por ejemplo por pastebin y lo intento editar para que aparezca tu aportación correctamente 😉

  2. Skydone

    Gracias por la explicación, es una solución muy interesante.
    Me surge la duda de qué pasaría con estas modificaciones si hacenmos una actualización de PrestaShop, se perderían y habría que volverlas a implementar?
    Gracias por tu atención.

    • dwalins

      Hola Skydone, justo es algo que os comentaba al final, que este tipo de cambios os recomiendo hacerlo mediante overrides porque así os evitais problemas a la hora de actualizar, porque si tocas directamente un archivo del nucleo, en la actualización el cambio va a desaparecer.

      En la parte final de este tutorial puedes ver como se haría un override para evitar perder las modificaciones.

      Un saludo!

    • SKydone

      Gracias por tu respuesta, pero no parece tan sencillo meter todas esas modificaciones en un override ¿hay algún tutorial o guía que explique cómo hacerlo?

    • dwalins

      Hola Skydone,
      hacer el override es algo más complicado, si tienes conocimientos de programación puedes echarle un vistazo a la guia oficial http://doc.prestashop.com/display/PS16/Overriding+default+behaviors, donde explican como se hace (aunque puede que demasiado por encima), no se si tienes más o menos soltura programando, hace falta saber un poco de clases.

      Échale un vistazo y me comentas a ver que tal

  3. Ana

    Hola
    He seguido todos los pasos y todo me ha funcionado correctamente. Hasta que he llegad al product.tpl que por más que pongo {$product->nombredemicampo} me sale vacío.
    En la base de datos se guarda el contenido que escribo en ese nuevo campo desde el BackOffice.
    Estoy utilizando una personalización del tema por defecto en la versión 1.6.0.11 de Prestashop.
    Lo he repasado varias veces y no soy capaz de ver el fallo.
    ¿Alguna idea?
    Gracias

    • Ana

      Ya he visto lo que me pasaba. Había insertado la clase Product.php en la carpeta override sin modificar y me lo estaba pillando de allí.
      Todo perfecto entonces.
      Gracias por el tutorial. Está muy bien explicado.

    • dwalins

      Hola Ana,

      Me alegra ver que lo hayas resuelto tan rápido y que se haya quedado funcionando a la perfección.

      Un saludo!

  4. santiago

    Buenas, he seguido todos los pasos y en el backend me muestra el campo pero no se me guarda en la base de datos… Las variable y los campos están tal y como explicas en el tutorial.
    ¿Alguna sujerencia?

    Gracias por el post 😉

    • dwalins

      Hola Santiago,

      Me alegra que te haya funcionado. La cache como no haciendo de las suyas siempre en Prestashop.

      Un saludo 😀

  5. conchin

    Hola:
    Tengo una página que hice con dreamwaver y quisiera pasarla a prestashop 1.6
    No se trata de una tienda, es modo catálogo sin precios ni carrito compra.
    Lo que quisiera y no encuentro como hacerlo en ningún sitio es lo siguiente:
    En productos, proveedores y fabricantes, poder insertar un link o enlace de texto o imagen hacia una url exterior.
    También poder insertar un banner como producto para que pudiera aparecer en inicio como nuevos productos o novedades.
    Si crees que se puede hacer, te agradecería me lo dijeras. Si es que no también.
    Tal vez lo que quiero no se pueda hacer con prestashop, pero quisiera intentarlo pues mi idea es hacer varias tiendas y para multitiendas creo que sería la mejor opción.
    En fin, espero tu respuesta.
    Muchas gracias.
    Conchin

    • dwalins

      Hola Conchin,
      Con Prestashop puedes activar una opción que configura todo de forma que sea un catálogo tal y como indicas.

      Editando la plantilla correspondiente vas a poder insertar un enlace en productos, proveedores y fabricantes que apunte hacia donde quieras, tendrás que editar los archivos tpl que encontrarás en la carpeta de tu tema.

      Hay un modulo que se llama homefeatured que te va a permitir insertar productos destacados en la página de inicio.

      Creo que lo que quieres hacer lo puedes lograr con Prestashop, seguramente tengas que hacer un par de ajustes en como lo planteas, pero no debería ser un problema.

      Si tienes más preguntas te espero por aqui.

      Un saludo

    • dwalins

      Hola Gabriel, me alegra que te funcionara perfectamente. Por supuesto que lo puedes ocultar, depende un poco de lo que vayas buscando debes hacerlo de una forma u otra, ¿quieres ocultarlo en el panel o en el front office?

    • Manuel

      Hola dwalins, en primer lugar muchas gracias por tu artículo. A mi me gustaría saber también como hacer oculto un campo. Me interesa que por ejemplo para un producto pueda tener un campo notas donde tener anotaciones del producto personales y que en el frontoffice si se entra a ese producto no se ve el campo notas. ¿Como puedo hacerlo? Muchas gracias.

    • dwalins

      Hola Manuel,

      Si sigues este mismo tutorial y te saltas la parte final donde se añade la información al archivo product.tpl lo que conseguirás es tener un campo en tu panel de administración (dentro de la ficha del producto) que no es posible ver desde ningún otro lado.

      Un saludo!

  6. Fernando

    Hola Dawlins,

    He añadido un campo en la tabla product y tres en la tabla product_lang, lo curioso es que desde la ficha de un producto los 4 campos recuperan la información, pero desde un listado de búsqueda o de categoría solo se recupera la información del campo de la tabla product y los de la tabla product_lang no recuperan la información, esto lo he tenido funcionando hasta que he cambiado de versión prestashop, no se si esta relacionado, pero me ha llegado a funcionar bien. Agradezco cualquier ayuda, por que me estoy volviendo loco.

    • dwalins

      Hola Fernando,

      ¿Los cuatro campos se guardan correctamente en la base de datos? Si es asi el problema vendrá seguramente por la actualización, ha debido de modificar la plantilla que mostraba el contenido y por eso ahora no se está viendo. Repasa el tpl de la búsqueda y de la categoría a ver si aparece la llamada al campo que quieres mostrar.

      Un saludo

  7. Fernando

    Hola dwalins, perdona la tardanza en contestar, he buscado en el fichero search.php las select en que devolvía los datos de la tabla product_lang y he puesto los campos que quería que salieran, con esto me ha funcionado.

    Gracias por todo y un saludo.

    • dwalins

      Hola Fernando, no te preocupes. Me alegra que finalmente lo hayas solucionado. Un saludo!

  8. Miguel

    Hola, estoy intentado crear una nueva tienda y quería añadir nuevos campos, por eso estoy siguiendo este tutorial. Mis conocimientos son muy básicos y me he atascado en:

    «El campo que acabamos de crear obviamente no viene por defecto en Prestashop, así que no han pensado en dejarnos un campo libre para usarlo, por lo tanto necesitamos entrar a nuestro gestor de la base de datos y añadir nosotros ese campo. Tenéis que buscar la tabla product_lang, por defecto el prefijo de la tabla suele ser ps_, con lo cual buscaríais ps_product_lang, pero puede que tenga otro prefijo diferente (yo por seguridad le suelo cambiar el prefijo). Así que nos vamos a la tabla y modificamos la estructura añadiendo al final un campo que se llame como nuestra variable. Con esto ya tendremos un hueco reservado para poder añadir nuestro texto.»

    No tengo ni idea de como gestionar la base de datos y modificarla. He entrado en mi lochalhost con xampp y en phpMyAdmin, he encontrado ps_producto_lang, pero me pierdo. He estado buscando por la web cómo hacer esa modificación y no veo la manera. Por si me pueden echar una mano, gracias.

    • dwalins

      Hola Miguel,

      La verdad que no tengo nada escrito sobre como tratar con phpMyAdmin, suelo orientar todo a gente que ya tiene unos conocimientos sobre el tema. Pero no te preocupes que todo tiene solución, la modificación no es muy complicada, te recomiendo que eches un vistazo en youtube sobre como añadir campos a una tabla de una base de datos en phpmyadmin, viendolo en vídeo lo vas a tener mucho más claro y podrás seguir el tutorial sin problemas.

      Cuentame como te va cuando le eches un vistazo 😉

  9. Miguel

    Hola de nuevo,

    Muchas gracias por la contestación. ¡No había buscado en youtube!
    Ayer después de preguntar aquí encontré casi por casualidad, la manera de añadir el campo a la base de datos, pero luego no aparecia el campo en la web a pesar de borrar el caché y demás. Al final lo rompí todo.

    Hoy, después de ver tu respuesta, he mirado en youtube y visto algunos videos. He vuelto ha hacer una nueva tienda y a probar introducir campos, y: ¡¡¡conseguido!!!

    En lugar de hacer un campo tipo «descripción» he hecho uno como el de «código de referencia»

    Lo único que ahora al introducir el dato que quiero me aparece bien en la web pero en el backend el recuadro para rellenar (después de guardar) pone siempre «Array», y en el front me aparece bien lo que he puesto… curioso.

    Seguiré cacharreando a ver que pasa. Muchas gracias de nuevo.

    • dwalins

      Hola Miguel,

      Me alegra saber que lo has podido solucionar! Que te salga array es porque no estás poniendo un valor concreto sino pasandole al campo un array y no sabe que hacer con él para mostrarlo. ¿Has visto que esté cogiendo bien la parte de $product->loquesea?

      Un saludo

    • Miguel

      Hola,

      Fui comprobando lo que había hecho y ya lo corregí, había copiado mal el código.

      Muchas gracias,
      Miguel G.

    • Daniel

      Pero seria bueno que dijeras exactamente que habías copiado mal, por que a mi me pasa lo mismo y no encuentro donde estoy copiando mal. Gracias d antemano!

  10. Sonia

    Hola,
    Gracias por el tutorial.

    La ultima parte no me sale. Como hay que poner exactamente esto:
    {$product->nombreDelCampo} ???

    He probado varias opciones y sale mi web en blanco, por lo que veo que meto el codigo donde no debe ser.

    • dwalins

      Hola Sonia,

      La forma de ponerla es esa, entre llaves y cambiando la parte de nombreDelCampo por el nombre que le hayas dado tu en tu ejemplo. Si te sale en blanco prueba a activar el modo debug para que tener más información sobre que está pasando, asi en lugar de una pantalla blanca tendrás un error detallado.

      Un saludo

  11. Sonia

    Otro tema.
    Veo que los cambios que hago ahora en descripcion de producto no se me guardan. Por que?
    Es posible que no hay hecho tampoco bien el penultimo punto??
    Esto es lo que me aparece: Se ha producido un error mientras se actualizaba el objeto product ()
    Dices que hay que poner el nuevo tab dentro del formulario, es despues de div o antes???

    • dwalins

      Si no se guarda es posible que no esté dentro del formulario o que no le hayas puesto el nombre de forma correcta. Debes fijarte en la etiqueta

      más que en los div, ya que lo que haya dentro de ese form es lo que será enviado y se guardará si está fuera no le hará casa.

      Un saludo

  12. Sonia

    dwallins,
    Esto es lo que tengo puesto en mi informations.tpl

    {include file=»controllers/products/multishop/checkbox.tpl» field=»description» type=»tinymce» multilang=»true»}


    {l s=’Description’}

    {include
    file=»controllers/products/textarea_lang.tpl»
    languages=$languages input_name=’description’
    class=»autoload_rte»
    input_value=$product->description}

    {include file=»controllers/products/multishop/checkbox.tpl» field=»description» type=»tinymce» multilang=»true»}


    {l s=’Description’}

    {include
    file=»controllers/products/textarea_lang.tpl»
    languages=$languages input_name=’Informacion_nutricional’
    class=»autoload_rte»
    input_value=$product->Informacion_nutricional}

    Copie a partir de y le puse la etiqueta que quiero poner como extra que es «Informacion nutricional».

    Que es lo que está mal hecho?

    • Sonia

      Parece que no puede copiarse lo que de verdad hay en mi informations.tpl

    • dwalins

      Hola Sonia,

      No te dejará copiar el archivo completo. Si lo has añadido antes del cierre de la etiqueta form esta parte no debería ser un problema, es posible que no tengas el mismo nombre asignado al campo de la base de datos, ¿has comprobado eso?

      Un saludo

  13. Sonia

    SE COPIO MAL. ES ESTO

    {include file=»controllers/products/multishop/checkbox.tpl» field=»description» type=»tinymce» multilang=»true»}


    {l s=’Description’}

    {include
    file=»controllers/products/textarea_lang.tpl»
    languages=$languages input_name=’description’
    class=»autoload_rte»
    input_value=$product->description}

    {include file=»controllers/products/multishop/checkbox.tpl» field=»description» type=»tinymce» multilang=»true»}


    {l s=’Description’}

    {include
    file=»controllers/products/textarea_lang.tpl»
    languages=$languages input_name=’Informacion_nutricional’
    class=»autoload_rte»
    input_value=$product->Informacion_nutricional}

  14. Carmen María

    Hola Dwalins:
    he seguido tus pasos y se me ha creado el campo en la ficha de producto. Gracias 🙂
    También estoy interesada en que el campo aparezca en el listado de productos. Para ello he añadido {$product->nombreDelCampo} a tema/product-list.tpl.
    Cuando listo los productos de una categoría, aparece correctamente, pero en el Bloque de novedades de la página principal no aparece. He comprobado si el campo estaba definido en ese caso con el código
    {if isset($product.cantidad)} Sí {$product.cantidad}
    {else} NO {/if}
    Y el campo no estaba definido en el Bloque de Novedades de la página principal y sí al seleccionar la categoría.
    ¿Me puedes ayudar?
    Muchas gracias

    • dwalins

      Hola Carmen,

      Me alegra que una parte te haya funcionado.
      ¿El bloque de novedades de la página principal es el módulo homefeatured o es algún otro? Debería mostrarte el campo que has creado, prueba listando todo el contenido de product {$product|@var_dump} a ver si aparece cantidad por algún sitio

      Prueba y me dices

      Un saludo

  15. Nacho

    Tengo una plantilla de prestashop en 1.6 que muestra en la ficha de producto la categoría a la que va asociada. Creo que coge ese dato de la descripción de la categoría. ¿Como podría mostrar el nombre de la categoría del producto?

    • dwalins

      Hola Nacho,

      Para que te aparezca el nombre de la categoría del producto debes usar {$product->category} pero debes tener en cuenta que el producto debe tener marcada como principal la categoría que quieras mostrar, imaginate que tienes un producto en la categoria «inicio» y en «oportunidades», si tiene como categoría principal «inicio» esta es la que te va a salir siempre aunque el cliente entre a través de otra categoría.

      Espero que te haya sido de ayuda.

      Un saludo

  16. Matt Ocean

    Muchas gracias por el tutorial, lo he implementado en mi tienda perfectamente.
    Perfecta explicación. ¡Un cordial saludo!

    • dwalins

      Me alegra que te haya funcionado en tu tienda 🙂

      Un saludo!

  17. Luis

    Hola,

    he seguido el tutorial para crear el campo «autor» para una librería online que estoy montando. Lo he hecho tanto en local como en el servidor y logro guardar los autores en la base de datos pero me encuentro con dos problemas:

    1.- No aparece el autor al visualizare el artículo en la tienda
    2.- No funciona la búsqueda por autor, aunque lógicamente sí por título.

    Este el código que he usado:

    Product.php

    /** @var string Autor */
    public $autor;

    ‘autor’ => array(‘type’ => self::TYPE_STRING, ‘lang’ => true, ‘validate’ => ‘isCatalogName’, ‘required’ => true, ‘size’ => 128),

    informations.tpl

    {include file=»controllers/products/multishop/checkbox.tpl» field=»autor» type=»default» multilang=»true»}


    {l s=’Autor’}

    {include file=»controllers/products/input_text_lang.tpl»
    languages=$languages
    input_class=»{$class_input_ajax}{if !$product->id || Configuration::get(‘PS_FORCE_FRIENDLY_PRODUCT’)}copy2friendlyUrl{/if} updateCurrentText»
    input_value=$product->autor
    input_name=»autor»
    required=true
    }

    phpMyAdmin

    ALTER TABLE `ps_product_lang` ADD `autor` VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `name`;

    product.tpl

    {$product->autor}

    ¿Alguna idea de qué está fallando?
    Gracias

  18. Pablo

    Hola Dwalins,

    Gracias por el tutorial, he seguido tus pasos y todo perfecto.

    Como tendría que hacerlo (y sobre todo donde) si quiero añadir un campo en la ficha proveedor? Quiero añadir la localidad española a la que pertenece y llevo atascado casi una semana. Ando modificando supplier.php y AdminSupplierController.php pero no consigo nada.

    Espero puedas ayudarme, gracias.

    • dwalins

      Hola Pablo,

      No he hecho la modificación, pero siguiendo la misma guia diria que los archivos que tienes que modificar son classes/suplier.php y adminFolder/themes/default/template/controllers/suppliers/helpers/view/view.tpl

      Pruebalo y me dices.

      Un saludo

  19. Pablo

    Hola de nuevo dwalins,

    He modificado view.tpl tal y como me dijiste y no realiza ninguna modificación. Lo único que he conseguido es añadir los campos que he reflejado en supplier.php, los he añadido en el array de la función renderform() de AdminSupplierController.php y aparecen, e incluso se guardan en la bbdd.

    Lo que no consigo es crear un select con las opciones de localidades que tengo en la bbdd, ya que al ser muchas se bloquea al acceder a la base de datos.

    ¿Puede ser por algún motivo de los parametros de la bbdd?

    Gracias!!

    • dwalins

      Hola Pablo,

      ¿Tantas son para que se sature? ¿Cuántas opciones estás intentando cargar? Si son solo localidades de España no debería ser un problema ya que no son tantas, ¿Cómo estás creando el select?

      Un saludo

  20. Pablo

    Hola dwalins,

    Lo primero muchas gracias por tu interes.

    Mis pasos han sido los siguientes:
    1) He añadido el campo $localidad en supplier.php
    2) He hecho una función obtenerLocalidades() con el select (SELECT nombre FROM ps_localidades) en AdminSupplierController.
    3) En el array (de tipo select) de la función renderForm() que se encuentra en el archivo AdminSupplierController, he hecho la llamada a la función anterior.

    Todo esto se funciona, únicamente que al mostrar las localidades en el desplegable tarda mucho en mostrarlas y bloquea la web. No consigo que salgan todas las localidades (son 8123). ¿A que se debe?

    Gracias

    • dwalins

      Hola Pablo,

      Aunque no son muchos puede que tu servidor se colapse un poco, porque el proceso parece correcto. Vamos a hacer una prueba. Limita la consulta por ejemplo a 100 resultados y mira si igualmente te bloquea la página.

      Un saludo

  21. robert

    Hola buenas,
    he seguido todas las instrucciones, pero tengo un problema. En el panel de administrador en la ficha del producto me sale el nuevo campo: «posologia». En la base de datos tambien y me lo graba.
    Pero en la tienda, en la ficha del producto no… ya no se donde modificar…

    {/if}
    {if $product->description}

    {l s=’More info’}{/if}
    {if isset($product) && $product->description}

    {$product->description}
    {if $product->posologia}

    {l s=’More info’}{/if}
    {if isset($product) && $product->posologia}

    {$product->description}

    • dwalins

      Hola Robert,

      En el código que me has puesto no hay ningún punto en el que muestres el contenido de posologia, preguntas si existe y tal pero no llegas a usar su valor nunca, tienes una linea que sea {$product->posologia} ?

      Un saludo

  22. Ricardo Romero

    Muchas gracias por el aporte, he seguido las instrucciones y si aparece el campo que he agregado, el asunto es a la hora de importar la informacion desde un .csv pues el campo agregado no aparece en la lista desplegable, podrias ayudarme para que aparezca? O hay alguna forma de modificar algun campo (UPC o EAN13) para que tome los valores que necesito, veras, el campo que agregue es una «clave de producto» que me es mas funcional que un UPC ya que asi lo maneja mi proveedor, el asunto es que ninguno de esos campos me toma los valores que son alfanumericos.

    Desde ya gracias por el apoyo!

  23. Alexander

    Amigo buen día para la versión 1.7.8.2 no funciona como podría hacer los archivos cambiaron informations.tpl sale en /cart_rules

Deja una respuesta

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