[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

    668
    47
    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 el hosting prestashop de FactoriaDigital.com 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;
    	}