CharlyAes32 Posted October 19, 2013 Share Posted October 19, 2013 (edited) Bonjour, j'ai eu beau chercher, fais des tas de modifications de homefeatured.php, je n'ai plus d'affichage des produits aléatoires sur la page d'accueil depuis la mise à jour de 1.5.4.1 vers 1.5.6.0. Je précise que je fais ma mise à jour en local avant de la mettre en production en lieu et place de ma 1.5.4.1 actuelle (sur laquelle le ramdom/suffle fonctionne parfaitement). Quelques idées pour retrouver cette fonction sur la 1.5.6.0? Merci de vos réponses et bout des codes... Arnaud Code actuel de homefeatured.php: <?php /* * 2007-2013 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License (AFL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/afl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to [email protected] so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <[email protected]> * @copyright 2007-2013 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ if (!defined('_PS_VERSION_')) exit; class HomeFeatured extends Module { private $_html = ''; private $_postErrors = array(); function __construct() { $this->name = 'homefeatured'; $this->tab = 'front_office_features'; $this->version = '1.1'; $this->author = 'PrestaShop'; $this->need_instance = 0; parent::__construct(); $this->displayName = $this->l('Featured products on the homepage.'); $this->description = $this->l('Displays featured products in the middle of your homepage.'); } function install() { $this->_clearCache('homefeatured.tpl'); Configuration::updateValue('HOME_FEATURED_NBR', 8); if (!parent::install() || !$this->registerHook('displayHome') || !$this->registerHook('header') || !$this->registerHook('addproduct') || !$this->registerHook('updateproduct') || !$this->registerHook('deleteproduct') ) return false; return true; } public function uninstall() { $this->_clearCache('homefeatured.tpl'); return parent::uninstall(); } public function getContent() { $output = '<h2>'.$this->displayName.'</h2>'; if (Tools::isSubmit('submitHomeFeatured')) { $nbr = (int)Tools::getValue('nbr'); if (!$nbr OR $nbr <= 0 OR !Validate::isInt($nbr)) $errors[] = $this->l('An invalid number of products has been specified.'); else Configuration::updateValue('HOME_FEATURED_NBR', (int)($nbr)); if (isset($errors) AND sizeof($errors)) $output .= $this->displayError(implode('<br />', $errors)); else $output .= $this->displayConfirmation($this->l('Your settings have been updated.')); } return $output.$this->displayForm(); } public function displayForm() { $output = ' <form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post"> <fieldset><legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Settings').'</legend> <p>'.$this->l('To add products to your homepage, simply add them to the "home" category.').'</p><br /> <label>'.$this->l('Define the number of products to be displayed.').'</label> <div class="margin-form"> <input type="text" size="5" name="nbr" value="'.Tools::safeOutput(Tools::getValue('nbr', (int)(Configuration::get('HOME_FEATURED_NBR')))).'" /> <p class="clear">'.$this->l('Define the number of products that you would like to display on homepage (default: 8).').'</p> </div> <center><input type="submit" name="submitHomeFeatured" value="'.$this->l('Save').'" class="button" /></center> </fieldset> </form>'; return $output; } public function hookDisplayHeader($params) { $this->hookHeader($params); } public function hookHeader($params) { $this->context->controller->addCSS(($this->_path).'homefeatured.css', 'all'); } public function hookDisplayHome($params) { if (!$this->isCached('homefeatured.tpl', $this->getCacheId('homefeatured'))) { $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 : 50),NULL,NULL,false,true,true,($nb ? $nb : 10)); $this->smarty->assign(array( 'products' => $products, 'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), 'homeSize' => Image::getSize(ImageType::getFormatedName('home')), )); } return $this->display(__FILE__, 'homefeatured.tpl', $this->getCacheId('homefeatured')); } public function hookAddProduct($params) { $this->_clearCache('homefeatured.tpl'); } public function hookUpdateProduct($params) { $this->_clearCache('homefeatured.tpl'); } public function hookDeleteProduct($params) { $this->_clearCache('homefeatured.tpl'); } } Edited October 21, 2013 by CharlyAes32 (see edit history) Link to comment Share on other sites More sharing options...
coeos.pro Posted October 19, 2013 Share Posted October 19, 2013 Salut, essaye ceci : public function hookDisplayHome($params) { //if (!$this->isCached('homefeatured.tpl', $this->getCacheId('homefeatured'))) { $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 : 50),NULL,NULL,false,true,true,($nb ? $nb : 10)); $this->smarty->assign(array( 'products' => $products, 'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), 'homeSize' => Image::getSize(ImageType::getFormatedName('home')), )); } return $this->display(__FILE__, 'homefeatured.tpl'); } c'est juste la mise en cache qui fait apparaître toujours les mêmes produits. 1 Link to comment Share on other sites More sharing options...
CharlyAes32 Posted October 21, 2013 Author Share Posted October 21, 2013 Merci coeoc.pro, ça fonctionne avec ce code Problème résolu ! Link to comment Share on other sites More sharing options...
Mike West Posted March 28, 2014 Share Posted March 28, 2014 (edited) Chez moi çà fonctionne parfaitement, mais j'ai quand même une question. Comment faire pour avoir une sélection aléatoire sur toute la boutique pas que sur la page d'accueil ? Ou au mieux uniquement sur les meilleurs ventes. Merci Edited March 28, 2014 by Mike West (see edit history) Link to comment Share on other sites More sharing options...
Jean Francois G Posted September 11, 2014 Share Posted September 11, 2014 quelle serait son adaptation pour un presta 1,6 ? svp Link to comment Share on other sites More sharing options...
coeos.pro Posted September 11, 2014 Share Posted September 11, 2014 change la fonction hookDisplayHome par: public function hookDisplayHome($params) { $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 : 10), NULL, NULL, false, true, true, ($nb ? $nb : 50), 'position'); $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'); } Link to comment Share on other sites More sharing options...
Jean Francois G Posted September 11, 2014 Share Posted September 11, 2014 (edited) J'ai bien changé le Hook Display home, et l'aléatoire se fait, mais qu'une seule et unique fois. Ensuite c'est toujours les même produits. Pour etre précis, meme si on vide le cache les produits ne changent pas. Il faut désactiver un des produits de "acceuil" et la l'aléatoire se fait à nouveaun mais une seule fois. Edited September 11, 2014 by Jean Francois G (see edit history) Link to comment Share on other sites More sharing options...
coeos.pro Posted September 11, 2014 Share Posted September 11, 2014 (edited) effectivement avec le cache de fichier ça ne fonctionne pas, essaye avec ceci : 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, NULL, NULL, false, true, true, 50, 'position'); shuffle($products); $this->smarty->assign( array( 'products' => array_slice($products, 0, $nb), 'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), 'homeSize' => Image::getSize(ImageType::getFormatedName('home')), ) ); return $this->display(__FILE__, 'homefeatured.tpl'); } Edited September 11, 2014 by coeos.pro (see edit history) Link to comment Share on other sites More sharing options...
Nory01 Posted November 7, 2014 Share Posted November 7, 2014 Bonjour,Cool, cela fonctionne parfaitement. Link to comment Share on other sites More sharing options...
Jean Francois G Posted April 9, 2015 Share Posted April 9, 2015 Je viens de me rendre compte que je n'ai pas dit merci... Alors MERCI ! Link to comment Share on other sites More sharing options...
davn44 Posted November 6, 2016 Share Posted November 6, 2016 Bonjour testé et approuvé sur une 1.6.1.7 Merci Link to comment Share on other sites More sharing options...
Epicapo Posted February 21, 2017 Share Posted February 21, 2017 grand merci pour le code 1.5 ca marche impec ! super content ça fait 3h que je rame! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now