Añadir nuevo filtro de ordenación en los productos en Prestashop

Cuando entramos a los listados de productos en Prestashop 1.7, vemos disponibles solo 5 filtros que podemos apreciar en la siguiente imagen.

Ordenación productos en Prestashop

En este ejemplo, vamos añadir un filtro nuevo para que el usuario pueda seleccionar la opción de ver los productos por fecha de creación.

Vamos al fichero => /src/Core/Product/Search/SortOrderFactory.php

Y nos encontramos la función “getDefaultSortOrders” con los métodos de ordenación por defecto.

Función => getDefaultSortOrders

Añadimos dentro de la función (dentro del return) la siguiente línea de código:

(new SortOrder('product', 'date_add', 'desc'))->setLabel(
$this->translator->trans('New', array(), 'Shop.Theme.Catalog')
),

Si os fijáis en el código, hemos añadido un nuevo filtro basado en la fecha de creación de los productos (date_add) de forma descendente (desc) con la etiqueta “New”. Por la etiqueta (texto) no os preocupéis que la podéis cambiar desde las traducciones de Prestashop.

Función modificada

Si no funciona, es porque tenéis activo el filtro (navegación por facetas / búsqueda por facetas (ps_facetedsearch)) que vemos en la columna izquierda de la tienda.

Módulo => ps_facetedsearch

Por lo tanto, tenemos que acceder al fichero:

modules/ps_facetedsearch/src/Ps_FacetedsearchProductSearchProvider.php

Donde nos encontramos la función => getAvailableSortOrders()

Función getAvailableSortOrders
Función getAvailableSortOrders

 Y añadiendo la siguiente línea de código (dentro del return de dicha función):

(new SortOrder('product', 'date_add', 'desc'))->setLabel(
$this->module->getTranslator()->trans('New', array(), 'Shop.Theme.Catalog')
),
Función getAvailableSortOrders modificada

Veremos que ahora podremos visualizar el nuevo filtro de ordenación:

Filtro nuevo añadido

Consideraciones:

  • En este “TIP” hemos tocado ficheros “originales”, lo óptimo es crear un override de los mismos siempre que se pueda.

Documento creado bajo Prestashop 1.7.3.3 bajo la plantilla por defecto.

Cambiar orden de los productos en el buscador en Prestashop

Antes de empezar el artículo, dejo algunas entradas anteriores que tenemos en el blog referente al orden por defecto de los productos en la tienda.

El problema que se nos plantea es el siguiente:

Voy a la pestaña Parámetros de la tienda -> Configuración

Bloque paginación

Y señalo que muestre los productos ordenados por nombre de forma ascendente

Configurar orden de los productos por defecto en Prestashop

Me voy a la tienda, y veo que me muestra los productos ordenados por nombre de forma ascenderte.

Listado de productos ordenados alfabéticamente

¿Pero qué ocurre si realizo una búsqueda en el buscador que me proporciona Prestashop?

Listado de productos por búsqueda

Vemos que no muestra los productos ordenados de forma alfabética.

¡Dios mío! ¿Qué ocurre?

Si vamos al controlador correspondiente al buscador, es decir al fichero:

/controllers/front/listing/SearchController.php

Vemos dentro la función -> getProductSearchQuery que tenemos un ordenamiento definido por defecto

Ordenamiento definido por defecto

Como podéis ver en la captura hablamos de la siguiente línea de código:

->setSortOrder(new SortOrder('product', 'position', 'desc'))

Si cambiamos ‘posicion’ por -> ‘name’ y ‘desc’ por ‘asc’ mostrara ordenados los productos por nombre de forma ascendente.

Linea de código cambiada

Si usamos ahora el buscador, aparecerán los productos ordenados por nombre de forma ascendente.

Producto ordenado

Consideraciones a tener en cuenta:

  1.  Evitar editar el controlador original y crear un override del mismo en el directorio -> /override/controllers/front/listing/
  2. Esperemos que en un futuro Prestashop permite configurar el “orden” de los productos a la hora de visualizarlos en las búsquedas.

Documento creado bajo Prestashop 1.7.3.3

Ordenar productos por popularidad en Prestashop

No todo es Prestashop 1.7/Prestashop 1.6, en este ejemplo, vamos a reseñar un aporte que en principio fue construido para la versión 1.5 de Prestashop (seguro que alguno de vosotros usa todavía esa versión)

Cuando hablamos de popularidad, hablamos de productos más vendidos 🙂

El aporte ha sido desarrollado por el usuario ps20am de la Comunidad de Prestashop

Permite añadir en los listados de productos en el selector de “Ordenar por” para ver ordenados los productos por “Populares (Más vendidos)”

Nueva opción de ordenación en Prestashop

No es un módulo, lo tenemos que copiar a “mano”.

No descargamos el fichero “zip” del aporte, y vemos que dentro tenemos una carpeta llamado “overide” y otra carpeta llamado “themes

Estructura del aporte

Esos dos directorios los copiamos en el directorio raíz de la tienda 🙂 (Si nos pregunta si queremos sustituir el fichero “product-sort.tpl” le decimos que  ‘SI’.)

Por último, en la pestaña Parámetros Avanzados -> Rendimiento limpiamos la cache

Veremos, que ahora ya tenemos la nueva opción añadida en el selector de “ordenar por:”

Nueva opción de ordenar añadida en Prestashop 
Nueva opción de ordenar añadida en Prestashop

¿Qué incluye realmente el aporte? Continúa leyendo Ordenar productos por popularidad en Prestashop