Modulo homefeatured, problemas con la caché al seleccionar productos aleatorios

Modulo homefeatured, problemas con la caché al seleccionar productos aleatorios en la configuración del módulo

Alabaz
Actualizado: 08/03/2024 1602
Modulo homefeatured, problemas con la caché al seleccionar productos aleatorios
Compartir:

El módulo homefeatured  nos permite visualizar una cantidad de productos en nuestra página web y además para cada carga, teniendo activada la opción Visualizar aleatoriamente productos, carga aleatoriamente estos productos. O eso debería.

modulo homefeatured configuration

 

El problema reside cuando tenemos habilitada la caché y se observa que, para cada carga de la página,  esta aleatoriedad no existe. Esto se ha probado y sucede en el módulo homefeatured de versiones 1.5-1.6 para prestashop versión 1.6.X (discupad si no lo he probado en más versiones :S).

y, para los más autodidactas, os pongo el código para que lo pongáis en el módulo homefeatured.

Creo que no hace falta explicación, se ha puesto en negrita las líneas a tener en cuenta para la modificación. Aunque, si sustituís los métodos por estos funcionará garantizado. Básicamente, se chequea si está habilitado o no la aleatoriedad en los productos para recoger de caché o en el caso contrario, volver a consultar los productos.

 

 

public function _cacheProducts()
{
$israndom = Configure::get('HOME_FEATURED_RANDOMIZE');
if (!isset(HomeFeatured::$cache_products) || $israndom )
{
$category = new Category((int)Configuration::get('HOME_FEATURED_CAT'), (int)Context::getContext()->language->id);
$nb = (int)Configuration::get('HOME_FEATURED_NBR');
if ($israndom)
HomeFeatured::$cache_products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 8), null, null, false, true, true, ($nb ? $nb : 8));
else
HomeFeatured::$cache_products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 8), 'position');
}

 

if (HomeFeatured::$cache_products === false || empty(HomeFeatured::$cache_products))
return false;
}

 

 

public function hookDisplayHome($params)
{
$retorno = "";
$israndom = Configuration::get('HOME_FEATURED_RANDOMIZE');
$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')),
)
);
if($israndom){
$retorno = $this->display(__FILE__, 'homefeatured.tpl');
}else{
$retorno = $this->display(__FILE__, 'homefeatured.tpl', $this->getCacheId());
}
return $retorno;
}

 

 

Seguramente este código es mejorable, pero ya os lo dejo a vosotros y vuestros comentarios. 

 

Espero haber servido de ayuda.

Un saludo,

0 comentarios

Escribe un comentario

¿Qué te ha parecido?