Productos destacados aleatorios en prestashop 1.6

Productos Destacados o Populares, como se llaman en prestashop 1.6, aleatorios.

Para poner los productos populares aleatoriamente, o sea, que cambien cada vez que se cargue la página debemos hacer lo siguiente:

Nos vamos a modulos/homefeatures y editamos el fichero homefeatured.php

Buscamos lo siguiente en el fichero:

public function hookDisplayHome($params)
{
if (!$this->isCached('homefeatured.tpl', $this->getCacheId()))
{
$this->_cacheProducts();
$this->smarty->assign(
array(
'products' => HomeFeatured::$cache_products,
'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
'homeSize' => Image::getSize(ImageType::getFormatedName('home')),
)
);
}
return $this->display(__FILE__, 'homefeatured.tpl', $this->getCacheId());
}

y lo sustituimos por lo siguiente:

public function hookDisplayHome($params){
$category = new Category(Context::getContext()->shop->getCategory(), (int)Context::getContext()->language->id);
$nb = (int)(Configuration::get('HOME_FEATURED_NBR'));
/*$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10));*/
$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10), 'date_add', 'DESC', false, true, true, $nb);
shuffle($products);
$this->smarty->assign(array(
'products' => $products,
'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
'homeSize' => Image::getSize('home_default'),
));
return $this->display(__FILE__, 'homefeatured.tpl');
}

Guardamos cambios en el fichero y recargamos nuestra página.

Ya tenemos nuestros productos mostrados aleatoriamente.

También te podría gustar...

10 Respuestas

  1. Ivan dice:

    Hola!!

    Llegué a tu página porque justo ando buscando como rotar automáticamente los productos destacados.
    Probé tu consejo y no me funciona ¿A qué crees que se podría deber?

    Muchas gracias de antemano por tu tiempo y ayuda

    Un cordial saludo

    Iván

    • Jose Ant. Martinez dice:

      Hola, Estas utilizando prestashop 1.6, verdad?
      Si es así debes ir a la siguiente ruta: raiz/modules/homefeatured y editar el fichero homefeatured.php
      En este fichero busca el método: public function hookDisplayHome($params)
      Una vez lo tengas localizado sustitúyelo por el método completo que tongo en el post y listo, debe funcionar.

      Si sigues teniendo problemas dimelo y lo miramos.

      Recuerda que si utilizas prestashop 1.5 no sirve este método, dímelo y te digo como es para la version 1.5

      Un saludo.

  2. Pedro dice:

    Hola!

    He sustituido el código que pones aquí arriba y no me funciona. Es el archivo raiz/modules/homefeatured/homefeatured.php.

    No es un dato relevante que use un theme de pago verdad?

    Muchas gracias!

  3. Jose Ant. Martinez dice:

    Hola, si es un theme de pago lo mas seguro es que el modulo de homefeatured este modificado para adaptarse a la plantilla de pago, por lo que los archivos que hay en raiz/modules/homefeatured/homefeatured.php quedan invalidados por los archivos que hay en raiz/themes/nombre-plantilla/modules/homefeatured/homefeatured.php, es decir prestashop da prioridad a los archivos de los módulos que hay instalados en el theme.

    Lo que puedes probar es lo siguiente:
    Primero que todo hacer una copia de seguridad por si acaso no funciona correctamente que puedas volver a tenerlo todo como lo tienes ahora.
    Y lo segundo es buscar el código y sustituirlo en la ruta del theme, o sea en: raiz/themes/nombre-plantilla/modules/homefeatured/homefeatured.php

    Prueba y me cuentas, pero ya no te puedo asegurar que funcione al 100%, depende del desarrollo del theme.

    Muchas Gracias. Saludos.

  4. Alberto dice:

    Si que funciona perfectamente… pero cuidado a la hora de actualizar el modulo… lo vuelve a poner sin ramdom…. Gracias por el aporte…. pasate por http://www.eskalartienda.com y mira que guay ha kedado…

  5. Productos destacados se esconden y no he podido solucionar el problema.

  6. funciono perfecto gracias, como hago para que los productos destacados no desaparezcan del home

  7. Carlos dice:

    Funciona genial, muchas gracias!

    Pero quiero rizar el rizo, tengo 600 y pico de productos, como puedo hacerlo para que en ese random solo salgan los 100 últimos?

    Un saludo y muchas gracias.

  8. Rubén dice:

    Funciona, Gracias

  9. Ana dice:

    Hola! Estoy intentando hacer lo mismo para los productos nuevos, modificando el blocknewproducts.php, pero no doy con la tecla.

    He encontrado otros códigos que modifican parte de la función getnewProducts, pero no tienen en cuenta la memoria caché, por lo que al activarla el código deja de funcionar. El código que tu presentas sí que la tiene en cuenta, pero no soy capaz de adaptarlo a mi caso para los productos nuevos.

    Si no te fuera mucha molestia, podrías darme unas pinceladas de cómo adaptarlo? O hacernos un post, que por lo que he leído por la red «semos» muchos los que andamos como patos intentando hacer lo mismo y te lo agradeceríamos muchísimo.

    Un saludo

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies