Si eres de los que acabas de lanzar una tienda online, seguramente te hayan recomendado la versión de Prestashop 1.7 al tratarse de la versión LTS, y teniendo en cuenta que en principio la versión de Prestashop 1.6 caducará en Septiembre de 2018, en cuanto a mantenimiento y parches se refiere, ha sido un acierto optar por esta nueva versión.
Si eres de los que han decidido migrar de la versión 1.6 de Prestashop a la 1.7 habrás notado que una de las funcionalidades más interesantes para vuestros clientes es que ellos puedan cambiar o personalizar los productos que desean ver por página.
En Prestashop 1.6 ésta funcionalidad se encontraba dentro del archivo orden de productos, pero nuestra sorpresa ha sido comprobar que en la última versión de Prestashop no viene incluida y hemos decido mejorar la funcionalidad de la plantilla con un pequeño cambio de programación. El objetivo es poder ver, al lado de la paginación y ordenación, el listado de productos.
Comenzaremos inicialmente modificando nuestra vista de diseño de la tienda online, entramos a la carpeta themes, y dentro elegimos el tema de nuestra tienda, allí tendremos la carpeta templetes -> catalog-> y sort-orders.tpl
Una vez localizado el fichero de ordenación añadiremos justo debajo del select:
En este caso hemos puesto todo con un value de 10000 productos por página.
Ahora debemos añadir la funcionalidad jQuery que nos permita realizar el cambio, para ello vamos a la carpeta asset-> js y dentro del fichero custom.js
Dentro de la función:
$(document).ready(function() { }
que nos indica que la tienda ha terminado de cargar. Añadimos:
Con esto conseguimos que nuestro Select esté actualizadoal valor de la variable.
Ahora debemos conseguir que cuando el desplegable cambie llame a la url para cambiar el límite establecido por Prestashop:
$(document).on('change', '#selecproductofpage', function(){ p = location.href.split('npages='); if(p[1] >1){ var newUrl = location.href.replace("npages="+p[1], "npages="+$('#selecproductofpage').val()); }else{ if(location.href.indexOf("?") == -1){ var newUrl = location.href + "&npages="+$('#selecproductofpage').val(); }else{ var newUrl = location.href + "&npages="+$('#selecproductofpage').val(); } } window.location.href = newUrl; });
Como veréis ya tenemos en el diseño web de la categoría de nuestra tienda el selector con una funcionalidad que cambiará nuestra url en base a qué valor elijamos. Ahora debemos dotar a Prestashop de un cambio dinámico de productos por página.
Para ello vamos hacer override de la función getProductSearchVariables que encontraremos en el controlador ProductListingFrontController.
Para ello creamos la carpeta controllersdentro de la carpeta override que encontraremos en la instalación de Prestashop, y dentro una llamada front.
Dentro de esta carpeta crearemos el fichero ProductListingFrontController.php
Ahora añadimos:
use PrestaShop\PrestaShop\Core\Product\Search\ProductSearchQuery; use PrestaShop\PrestaShop\Core\Product\Search\Pagination; use PrestaShop\PrestaShop\Core\Product\Search\ProductSearchContext; use PrestaShop\PrestaShop\Core\Product\Search\ProductSearchResult; use PrestaShop\PrestaShop\Core\Product\Search\Facet; use PrestaShop\PrestaShop\Core\Product\Search\SortOrder; use PrestaShop\PrestaShop\Core\Product\Search\ProductSearchProviderInterface; use PrestaShop\PrestaShop\Core\Product\Search\FacetsRendererInterface; abstract class ProductListingFrontControllerextends ProductListingFrontControllerCore {}
Copiaremos la función getProductSearchVariables y reemplazaremos:
if (!is_array($providers)) { $providers = array(); }
foreach ($providers as $provider) { if ($provider instanceof ProductSearchProviderInterface) { return $provider; } } return; }
Ahora debemos borrar la caché de nuestra tienda online y probar si tenemos activada el número de productos por página de forma dinámica.
Lo bueno de las funciones override es que no afectarán la seguridad de nuestra tienda online ni a la fiabilidad del sistema.
Si tienes una tienda online y tienes alguna duda sobre cómo mejorar sus funcionalidades puedes ponerte en contacto con el equipo de desarrollo web de digitalDot en Murcia y seguro que podrán ayudarte.
DigitalDot Servicios Informáticos, S.L. utiliza cookies propias y de terceros para mejorar nuestros servicios y mostrarte publicidad relacionada con sus preferencias mediante el análisis de tus hábitos de navegación. Puedes aceptarlas con el botón "Aceptar", rechazarlas en el botón "Rechazar" o configurarlas con el botón "Gestionar preferencias". Puedes consultar más información detallada sobre las cookies utilizadas en este sitio web desde nuestra política de cookies.
Funcional
Siempre activo
Las cookies funcionales son absolutamente imprescindibles para que el sitio web funcione correctamente. Estas cookies garantizan las funcionalidades básicas y las características de seguridad del sitio web, de forma anónima.
Preferencias
El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario.
Estadísticas
El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos.Las cookies estadísticas se utilizan para entender cómo interactúan los visitantes con el sitio web. Estas cookies ayudan a proporcionar información sobre las métricas del número de visitantes, la tasa de rebote, la fuente de tráfico, etc.
Marketing
Las cookies de marketing son necesarias para crear perfiles de usuario para enviar y personalizar publicidad, o para rastrear al usuario en una web o en varias web con fines de marketing similares.