[Aporte] Productos Destacalos aleatorios en prestashop 1.6

Tema en 'Recursos y aportes gratuitos para Prestashop' iniciado por Josraso, 5/11/14.

  1. Josraso

    Josraso Lo cortes no quita lo valiente. Miembro del equipo

    647
    44
    28
    Para mostrar los productos destacados de forma aleatoria en prestashop 1.6 hay que hacer el siguiente cambio.
    Nos vamos a modulos/homefeatures y editamos el fichero homefeatured.php


    Buscamos el siguiente codigo

    Insertar CODE, HTML o PHP:
    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 este


    Insertar CODE, HTML o PHP:
    
    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');
    }
    
     
  2.  
    Comunidad Prestashop orgullosamente patrocinada por FactoriaDigital, expertos en hosting prestashop con soporte en español.
  3. wikiprestashop

    wikiprestashop Administrator Miembro del equipo

    210
    3
    18
    Por cierto, creo que el modulo actual ya lleva la función de aleatorio. (Al menos eso veo en la configuración del modulo.)
     
  4. catoku

    catoku Amante de Prestashop

    61
    0
    0
    En mi caso, como no usaba la ultima versión del módulo, pero si usaba una versión mas actual del módulo, tuve que cambiar este código:

    Insertar CODE, HTML o PHP:
    public function _cacheProducts()
    	{
    		if (!isset(HomeFeatured::$cache_products))
    		{
    			$category = new Category(Context::getContext()->shop->getCategory(), (int)Context::getContext()->language->id);
    			$nb = (int)Configuration::get('HOME_FEATURED_NBR');
    			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;
    	}
    por

    Insertar CODE, HTML o PHP:
    public function _cacheProducts()
    	{
    		if (!isset(HomeFeatured::$cache_products))
    		{
    			$category = new Category(Context::getContext()->shop->getCategory(), (int)Context::getContext()->language->id);
    			$nb = (int)Configuration::get('HOME_FEATURED_NBR');
    			/*HomeFeatured::$cache_products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 8), 'position');*/
    			HomeFeatured::$cache_products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10), NULL,NULL,false,true,true,($nb ? $nb : 100));
    		}
    
    		if (HomeFeatured::$cache_products === false || empty(HomeFeatured::$cache_products))
    			return false;
    	}