Prestashop 1.7.3.0 final disponible para descargar

Prestashop ha publicado a día 28 de febrero de 2018 la versión 1.7.3.0 para funcionar en producción.

Nueva variante de Prestashop 1.7
Prestashop 1.7.3.0

A diferencia de las anteriores versiones de 1.7.3.0 que habían salido (es decir, Prestashop 1.7.3.0 beta, Prestashop 1.7.3.0 RC1) para testeo y reporte de errores, la versión actual se supone que es para funcionar en producción.

En su momento, estuvimos comentando algunas de las novedades que traía Prestashop 1.7.3.0 RC1 (recordar post)

De todos modos, decir que se han corregido una barbaridad de errores en comparación con versiones anteriores, además de añadir nuevas funcionalidades. Por lo tanto, quien estuviera trabajando con Prestashop 1.7, es conveniente que piense en actualizar a Prestashop 1.7.3.0. Respecto a aquellas personas que estén usando Prestashop 1.6, mi recomendación es que esperen un poquito y sean un poco pacientes.

  • PrestaTrust -> Funcionalidad que autentifica el código de los módulos y registra la información de ellos de forma segura en la base de datos blockchain.
  • Compatibilidad para los idiomas con escritura de derecha a izquierda (comúnmente conocido como RTPL), útil para idiomas  como el árabe y el hebreo.
  • Los datos de demostración que se muestran en la demo (productos, categorías) cambian.
  • Se migran 3 nuevas páginas a Symfony, que posibilitan nuevas funciones a los desarrolladores.
  • Editar stock en bloques.
  • Generación individual de alertas por email en base a un umbral de stock definido de forma individual por productos.
  • Posibilidad de configurar la hora de entrega y del cumplimiento de la legislación europea.

Descargar Prestashop 1.7.3.0 
Log de cambios
https://www.prestashop.com/es/versiones-anteriores

Información adicional por aquí en el blog de desarrolladores: http://build.prestashop.com/news/prestashop-1-7-3-0-available/

* Actualización del articulo -> Nosotros habíamos dejado la noticia el 28 de febrero de 2018 y después de unas semana Prestashop ha publicado en su blog más información sobre la versión, por lo que dejo link:

https://www.prestashop.com/es/blog/ya-esta-disponible-prestashop-1-7-3-0-1

Mostrar descripción de las categorías en el móvil en Prestashop 1.7

En resoluciones pequeñas al acceder al listado de productos por categorías en Prestashop 1.7, se oculta la descripción y la imagen de la categoría.

Listado de productos por categoría

La idea es mostrar la descripción de la categoría, tal como podemos visualizar en la siguiente captura:

Descripción de las categorías en Prestashop 1.7

Vamos al fichero:

/themes/classic/templates/catalog/listing/category.tpl

Y dentro de:


<div class="text-sm-center hidden-md-up">

Vemos que solo se imprime el título de la categoría.

Título categoría

Podemos añadir debajo la impresión de la descripción de la categoría:

{if $category.description}
<div id="category-description" class="text-muted">{$category.description nofilter}</div>
{/if}

Quedando del siguiente modo (recordar que si pulsáis sobre la imagen la podéis ver ampliada):

Código modificado
Código modificado

Quizás es un poco confuso, pero fijaros que en el fichero que estamos editando, vemos dentro del:  <div class=”block-category card card-block hidden-sm-down”> que se muestra el título, la descripción y la imagen de la categoría.

Resolución normal

Que es lo correspondiente a lo que estamos visualizando en una resolución normal.

Resolución normal

Y el código que vemos dentro de:  <div class=”text-sm-center hidden-md-up”> es el que vemos en resoluciones pequeñas.

Resoluciones pequeñas
Título pequeño

Por otro lado, recordar que hemos editado directamente la plantilla, pero recordar que en Prestashop 1.7 podemos trabajar con las plantillas hijas (child theme) que aunque nadie te ponga una pistola para trabajar de esa forma, es recomendable, por el blog tenemos un post de Junio de 2017, donde se trataba dicho tema (revisar enlace).

Documento construido bajo Prestashop 1.7.2.5 con la plantilla por defecto.

Mover módulo de posición sin añadirlo a un hook en Prestashop 1.7

Esta entrada es simplemente recordatoria.

En mayo del año 2017, estuvimos comentando el nuevo sistema de Widget que incorpora Prestashop 1.7 en los módulos, para aquellos que no lo recuerden, vuelvo a dejar el enlace: Entendiendo el funcionamiento de los widget en Prestashop 1.7

En junio del año 2017 estuvimos mostrando un ejemplo de como mostrar el formulario de contacto en otras secciones de la tienda, si no lo recordáis, vuelvo a dejar enlace Formulario de contacto en los contenidos en Prestashop 1.7

Si bien es cierto que actualmente podemos mover los módulos (al menos la mayoría de los nativos de Prestashop) desde la pestaña Diseño -> Posiciones (ejemplo básico) a casi todos los hooks porque implementan la interfaz WidgetInterface, sin necesidad de añadir la función del hook como hacíamos en versiones anteriores, también podemos indicar que queremos mostrar un determinado módulo en una determinada zona sin tener que asignar un hook a esa zona, esto es lo que habíamos explicado a inicios del año pasado (2017) en el blog.

Por lo tanto, a modo recordatorio, os recomiendo visitar las siguientes entradas del blog:

Entendiendo el funcionamiento de los widget en Prestashop 1.7 (mayo 2017)
Formulario de contacto en los contenidos en Prestashop 1.7 (junio 2017)

Y también viene bien repasar aquella guía que se hizo sobre la creación de un módulo para Prestashop 1.7 sobre abril del 2017 donde comentábamos también el tema del widget: Crear módulo Prestashop 1.7 (marzo 2017)

Me gusta indicar fechas, porque son entradas que están publicadas en el blog en esas fechas y siempre pueden existir variaciones conforme van saliendo nuevas variantes de Prestashop, aunque sean de la misma rama.

 

Cambiar etiquetas “h1” de los listados de productos en Prestashop 1.7

En Prestashop 1.7 (hasta la versión 1.7.3.0 RC1) vemos que en los listados de productos el título del producto esta englobado en un “h1”.

Veamos desde inspeccionar elemento.

Etiqueta H1 en los listados de productos
Etiqueta H1 en el título de los listados productos

Para cambiar la etiqueta “h1” en los listados de productos por otra etiqueta (h2/h3/ etc.. lo que nos interese) editamos el fichero:

/themes/classic/templates/catalog/_partials/miniatures/product.tpl

¿Por qué ese fichero?

Al acceder al fichero (correspondiente a la plantilla de visualización del módulo de productos destacados):

/themes/classic/modules/ps_featuredproducts/views/templates/hook/ps_featuredproducts.tpl

Vemos un include a:

/themes/classic/templates/catalog/_partials/miniatures/product.tpl
(con un bucle foreach para imprimir los productos)

Bucle + include

Al acceder al fichero: /themes/classic/templates/catalog/listing/product-list.tpl  que corresponde al listado de productos por categoría o el que se usa de plantilla cuando buscamos un producto y arrojamos los resultados etc.. vemos otro include hacia el fichero:

/themes/classic/templates/catalog/_partials/products.tpl

Include

Al acceder al fichero:

/themes/classic/templates/catalog/_partials/products.tpl veremos que hace un include al fichero:

/themes/classic/templates/catalog/_partials/miniatures/product.tpl

Include
 Por lo tanto, los cambios los vamos a realizar en el fichero:


/themes/classic/templates/catalog/_partials/miniatures/product.tpl

Buscamos el bloque ->  {block name=’product_name’}

{block name=’product_name’}

Y nos encontramos dentro la etiqueta “h1” junto con la variable que imprime el nombre del producto.

Etiqueta h1

Por ejemplo, la cambiamos por “h3”

Cambiar etiqueta h1 por h3

Cuando accedemos a los listados de productos, veremos un “h3” en los nombres de los productos.

Etiqueta cambiada

Si queremos que el cambio solo se aplique a la página principal y no al resto de listados, podemos usar un condicional con la variable:

 {$page.page_name}

Por ejemplo,

Si estamos en la página principal cambiamos los h1 de los títulos de los productos por h2, en el resto de sitios donde aparezcan los listados de productos colocamos otra etiqueta, por ejemplo el h3.

Etiqueta de título según sección en Prestashop

Fijaros que con:  {$page.page_name} hemos construido un condicional para comprobar en que sección estábamos.

Si accedemos ahora a la tienda, veremos que los títulos de productos tienen la etiqueta “h3” en la página principal.

h3 en los listados de productos de la página principal

Si accedemos a otra sección de la tienda que no sea el listado de productos de la página principal.

Por ejemplo los listados de productos por categoría, veremos la etiqueta “h2” en los listados de productos.

Listado de productos por categoría

Podéis más información sobre cómo construir condicionales en la documentación de Smarty:
https://www.smarty.net/docsv2/es/language.function.if.tpl
https://www.smarty.net/docs/en/language.function.if.tpl

El valor de la variable: {$page.page_name} lo podemos identificar fácilmente desde inspeccionar elemento donde el body tiene asignado mediante un id el valor de dicha variable.

ID sección categoría

Por ejemplo, cómo podemos ver en la captura, cuando estamos situados en la sección de los listados de productos por categoría el valor de {$page.page_name} es “category” mientras que cuando estamos en la página principal el valor es “index

Obviamente a que tener cuidado tocando el fichero: 

/themes/classic/templates/catalog/_partials/miniatures/product.tpl

Ya que afecta a todas las partes de la tienda (sean módulo u otras secciones) que realicen ese include, una forma de diferenciar donde estamos es con el: {$page.page_name}, otra es definiendo un include diferente para cada sección copiando la estructura general del que ya existe.

Dicho esto, en mi caso particular he aplicado los cambios del “ejemplo” editando sobre la misma plantilla, pero lo más conveniente es crear una plantilla hija y hacer solo los cambios pertinentes en la plantilla hija.

Documento construido en base Prestashop 1.7.3.0 RC1 y la plantilla por defecto.

PosData: Si no veis los cambios pulsar el botón de limpiar (vaciar) la cache en la pestaña Parámetros Avanzados -> Rendimiento

 

Prestashop 1.7.2.5 disponible para descargar

El día 21 de febrero de 2018 Prestashop ha publicado la versión 1.7.2.5.

Se trata una actualización de seguridad para todas las versiones anteriores de Prestashop 1.7.

Actualmente se detectaron 2 vulnerabilidades que afectaban al backoffice (panel de administración) y una de ellas es crítica.

Más información sobre dichas vulnerabilidades aquí:

http://build.prestashop.com/news/prestashop-1-7-2-5-maintenance-release/

Información

Descargar Prestashop 1.7.2.5

https://www.prestashop.com/es/versiones-anteriores

Log de cambios

Hooks de la ficha del producto en Prestashop 1.7

En el año 2013 estuvimos comentando en un artículo algunos de los hooks disponibles en la ficha del producto para Prestashop 1.5, en esta ocasión vamos hablar sobre lo mismo pero aplicado a Prestashop 1.7 en base a la plantilla por defecto.

Solo vamos a intentar hablar de los hooks de visualización (los display, no los actions, referente a los actions en la ficha del producto lo explicaremos en otro post)

Al acceder al fichero:

/themes/classic/templates/catalog/product.tpl

Si buscamos la palabra “hook” encontraremos inicialmente dos referencias:

hook -> displayReassurance

displayReassurance

hook -> displayFooterProduct

displayFooterProduct

Que corresponde visualmente a lo que señalamos en rojo en la siguiente captura:

displayFooterProduct y displayReassurance
displayFooterProduct y displayReassurance

En el hook -> displayReassurance tenemos inicialmente instalado el módulo: blockreassurance (Información de seguridad y confianza para el cliente) que podemos ver en la misma captura.

Por otro lado, en está captura,  no vemos ningún módulo instalado en el hook -> displayFooterProduct, pero por ejemplo el módulo de ventas cruzadas (ps_crossselling) suele quedar anclado en ese hook o el típico de productos de la misma categoría.

Volvemos al fichero:

/themes/classic/templates/catalog/product.tpl

Y encontramos otro include:

Otro include

Al acceder al fichero:

/themes/classic/templates/catalog/_partials/product-additional-info.tpl

Vemos que tenemos disponible el hook -> displayProductAdditionalInfo

Hook -> displayProductAdditionalInfo

Un ejemplo, es que en este hook por defecto se esta imprimiendo el módulo de las redes sociales en una instalación limpia de Prestashop. Es decir, la zona situada debajo del botón de “Añadir al carrito” y encima del hook displayReassurance

displayProductAdditionalInfo

Si seguimos avanzando en el fichero:

/themes/classic/templates/catalog/product.tpl

Vamos a ver varios “includes

Por ejemplo, el referente a las miniaturas que aparecen debajo de la imagen grande del producto.

thumbnails
Include

Al acceder al fichero:

/themes/classic/templates/catalog/_partials/product-cover-thumbnails.tpl

Vemos que debajo de las “miniaturas” tenemos otro hook denominado: displayAfterProductThumbs.

displayAfterProductThumbs

Que se visualizara debajo de las miniaturas.

displayAfterProductThumbs

Volvemos al fichero:

/themes/classic/templates/catalog/product.tpl

Y encontramos otro include correspondiente el bloque de precios de la ficha del producto

Otro include

Al acceder al fichero:

/themes/classic/templates/catalog/_partials/product-prices.tpl

Nos encontramos el hook -> displayProductPriceBlock

displayProductPriceBlock
displayProductPriceBlock

PosData:

Los antiguos hooks displayProductTab  y displayProductTabContent de las pestañas “están “muertos” por el momento hasta que Prestashop decida añadirlos por defecto en las próximas variantes.

Tabs Prestashop 1.7

Include: /themes/classic/templates/catalog/_partials/product-details.tpl

De todos modos, yo pienso posiblemente lo puedan añadir en un futuro/presente por defecto, sino pues simplemente creáis vuestros hooks: Crear hooks en Prestashop

Documento válido hasta Prestashop 1.7.3.0 RC1

Prestashop 1.7.3.0 RC1 disponible para descargar

Hace unos meses estuvimos hablando sobre Prestashop 1.7.3.0 beta 1  comentando alguna de las novedades que nos traía dicha versión de Prestashop (Revisar artículo)

El día 19 de febrero de 2018 Prestashop ha publicado la versión 1.7.3.0 RC1.

Algunos cambios

RC = Versión candidata a definitiva
Más información sobre el significado las fases de desarrollo aquí: https://es.wikipedia.org/wiki/Fases_del_desarrollo_de_software#Versi%C3%B3n_candidata_a_definitiva_(RC)

Descargar Prestashop 1.7.3.0 RC1
Log de cambios: Descargar

Más información: http://build.prestashop.com/news/prestashop-1-7-3-0-rc-1/

El FeedBack sobre dicha versión estará disponible hasta el 26 de febrero.

Intercambiar texto “Añadir al carrito” por “Ya está añadido al carrrito” en Prestashop 1.7

Traducción del idioma de Shakespeare al de Cervantes de un aporte construido por myprestamodules con información ampliada.

La idea es que el texto del botón “Añadir al carrito” se cambie por “Ya está añadido al carrito” o similar cuando el producto que vayamos añadir al carrito se haya añadido con anterioridad al mismo.

Mensaje indicando que el producto ha sido añadido con anterioridad al carrito

Accedemos al fichero:

/themes/classic/templates/catalog/_partials/product-add-to-cart.tpl

Buscamos el siguiente código:

Código a buscar
{l s='Add to cart' d='Shop.Theme.Actions'}

Y vamos a cambiarlo por lo siguiente:

    • 1º – Creamos variable en Smarty que inicializamos a 0

      Variable incializada a 0
    • 2º – Recorremos con un bucle los productos que están en ese momento añadidos al carrito y comprobamos si el producto en cuestión coincide con algunos que tengas en carrito. Si se cumple la condición asignamos a la variable “$in_cart” el valor 1

      Recorrer los productos del carrito
    • 3º – Creamos un condicional que dice si la variable $in_cart tiene valor 1 mostramos un literal, en caso contrario otro.
      Condicional

      El resultado final será el siguiente:

      Resultado final

Añadir campos a los productos en Prestashop 1.7

Traducción del francés al castellano de un aporte construido por hennes  con información adicional.

Prestashop 1.7 introduce grandes cambios en el backoffice (panel de administración) en la gestión de los productos en comparación con versiones anteriores de Prestashop.

Vamos a ver como añadir nuevos campos a los productos y administrarlos desde el panel. Al final del post encontrareis un módulo que te permite añadir varios campos en el hook -> DisplayAdminProductsMainStepLeftColumnMiddle

Vamos a creamos un módulo para añadir y mostrar los campos en el panel de administración y también constuiremos un override de la clase Product.

Al acceder al fichero: /src/PrestaShopBundle/Resources/views/Admin/Product/form.html.twig

Acceder a fichero

Veremos que tenemos disponible los siguientes hooks en el panel de administración dentro de los formularios de los productos.

  • displayAdminProductsExtra
  • displayAdminProductsMainStepLeftColumnMiddle
  • displayAdminProductsMainStepLeftColumnBottom
  • displayAdminProductsMainStepRightColumnBottom
  • displayAdminProductsQuantitiesStepBottom
  • displayAdminProductsPriceStepBottom
  • displayAdminProductsOptionsStepTop
  • displayAdminProductsOptionsStepBottom
  • displayAdminProductsSeoStepBottom  (este hook se encuentra en el fichero: src/PrestaShopBundle/Resources/views/Admin/Product/Include/form_seo.html.twig )

Mostramos capturas de donde se encuentran los hooks “gráficamente” en en el formulario de edición de los productos.

Pestaña -> Ajustes básicos de la ficha de edición del producto

Hooks disponibles:

  • displayAdminProductsMainStepLeftColumnMiddle
  • displayAdminProductsMainStepLeftColumnBottom
  • displayAdminProductsMainStepRightColumnBottom
Pestaña ajustes básicos de la ficha de edición del producto

Pestaña ->  Stock/cantidades de la ficha de edición del producto

Hooks disponibles:

  • displayAdminProductsOptionsStepBottom
Pestaña ->  Stock/cantidades de la ficha de edición del producto
Pestaña ->  Stock/cantidades de la ficha de edición del producto

Pestaña -> Precio/s de la ficha de edición del producto

Hooks disponibles:

  • displayAdminProductsPriceStepBottom
Pestaña precio de la ficha de edición del producto

Pestaña opciones de la ficha de edición del producto

Hooks disponibles:

  • displayAdminProductsOptionsStepTop
  • displayAdminProductsOptionsStepBottom
Pestaña opciones de la ficha de edición del producto
Parte inferior de la pestaña opciones de la ficha de edición del producto

Pestaña SEO de la ficha del producto

Pestaña SEO de la ficha de edición del producto

El módulo al que hacemos referencia al inicio del post, añadirá los campos en la pestaña de Ajustes básicos del producto en el hook -> displayAdminProductsMainStepLeftColumnMiddle

Empecemos:

El override de la clase Product.php contendra la definición de los nuevos campos

Override de la clase Product

Estos campos (lo explicaremos posteriormente)  se encarga el módulo de crearlos en la base de datos en las tablas correspondientes.

Dentro del override vemos tres atributos publicos (correspondiente al nombre de los campos) de la clase

Atributos publicos de la clase

El constructor de la clase donde definimos los campos (que recordamos el módulo se encarga de crear dichos campos en la base de datos).

Definición campos

Y por último llamamos al constructor padre

Llamada a constructor padre

Ahora vamos a ver la clase principal del módulo:

hhproduct.php

El módulo queda instalado en el hook:

displayAdminProductsMainStepLeftColumnMiddle

Registrar módulo en Hook

Además vemos que al instalarse el módulo se ejecuta una función denominada: _installSql

Ejecución de la función: _installSql

Lo que hace la función _installSql es:

Añadir en la tabla: ps_product el campo denominado: custom_field.
Añadir en la tabla: ps_product_lang los campos custom_field_langcustom_field_lang_wysiwyg

Función: _installSql

Por otra parte dentro de la función del hook -> hookDisplayAdminProductsMainStepLeftColumnMiddle vamos a ver qué información cargamos/visualizamos.

hookDisplayAdminProductsMainStepLeftColumnMiddle

Obtenemos información del producto actual

Crear instancia de la clase Product

Obtenemos los idiomas activados

Obtener idiomas de la tienda

Preparamos las variables para pasarlas a la plantilla TPL que es la que luego visualizamos. 

Preparar variables Smarty

Pasamos el valor de los campos, accediendo a los atributos del override de la clase Product que hemos mencionado anteriormente.

Pasamos valores de los campos para poder usarlos en el TPL

Pasamos los idiomas que están activados y el idioma por defecto en el que se encuentra el panel de administración el empleado que está editando/creando el producto.

Pasamos idiomas activados e idioma por defecto al TPL

Retornamos el fichero *.tpl que luego visualizaremos

TPL

El fichero: extrafields.tpl del directorio: /views/templates/hook/ del directorio del módulo contiene los campos del formulario que luego visualizamos en la ficha del producto.

Veremos por ejemplo el campo: “custom_field” que no era “multi idioma”, ya que no lo hemos introducido en la tabla ps_product, no en la tabla ps_product_lang

Campo -> custom_field

El campo: custom_field_lang que es un campo multi idioma, pero sin el editor gráfico.

<div class="translations tabbable">
<div class="translationsFields tab-content">
{foreach from=$languages item=language }
<div class="tab-pane translation-label-{$language.iso_code} {if $default_language == $language.id_lang}active{/if}">
<input type="text" name="custom_field_lang_{$language.id_lang}" class="form-control" {if isset({$custom_field_lang[$language.id_lang]}) && {$custom_field_lang[$language.id_lang]} != ''}value="{$custom_field_lang[$language.id_lang]}"{/if}/>
</div>
{/foreach}
</div>
</div>

Y el campo custom_field_lang_wysiwyg que es un campo multi idioma, pero con el editor grafico.

En el tpl: modules/hhproduct/views/templates/hook/extrafields.tpl podeis ver el resto del código.

Si instalamos el módulo que nos ha proporcionado hennes 

Descargar módulo

Veremos que ya nos aparecerán los campos en la pestaña Ajustes básicos de la ficha de edición del producto.

Veremos ahora con el hook -> displayAdminProductsMainStepLeftColumnMiddle podemos ver los nuevos campos:

Ver campos nuevos en el panel de administración
Ver campos nuevos en el panel de administración

Además, podemos acceder a la información de dichos campos para mostrarlos luego en la ficha del producto.

Si vamos al fichero: /themes/classic/templates/catalog/product.tpl

Y queremos mostrar los campos debajo de las miniaturas de los productos:

Mostrar campos

A modo chapuzilla en el fichero:

/themes/classic/templates/catalog/product.tpl

Debajo del siguiente código:

Zona donde añadir las variables

Podemos añadir las variables:

{$product.custom_field}, {$product.custom_field_lang}, {$product.custom_field_lang_wysiwyg} 

Por ejemplo, añadimos la variable: {$product.custom_field_lang_wysiwyg}  que es el campo en el que veíamos el editor grafico en el panel de administración.

Mostrar variable

Si ahora añadimos una imagen en el campo en cuestión desde el panel de administración, veremos que la vamos a ver cuándo vayamos a ver el producto en la tienda.

Campo panel de administración
Nuevo campo del producto en Prestashop 1.7

Dicho esto, es mejor modificar el módulo e imprimirlo en algunos de los hooks disponibles en la ficha del producto en Prestashop 1.7  (o crear directamente un nuevo hook, dependiendo de lo que nos interese) que editar el tpl de la plantilla.

Documento construido bajo Prestashop 1.7.2.4 con la versión “0.1.0” del módulo de Hernes

Descargar módulo: Descargar

PosData: El override viene ya en el módulo y al instalarse el módulo se copia automáticamente en el directorio /override/classes/

Breadcrumb en la sección “Mis alertas” de Prestashop 1.7

Pequeño TIP donde comentamos brevemente la posibilidad de añadir el breadcrumb a la sección “Mis alertas” de la sección “Su cuenta” en Prestashop 1.7.

Para acceder a este manual de Prestashop 1.7, debéis pinchar en la siguiente imagen:

Documentación Prestashop 1.7

PostData: Espero que os pueda servir de ayuda 🙂