l.drevet Posted February 27, 2013 Share Posted February 27, 2013 Bonjour à tous, je souhaiterais savoir si il est possible de configurer le bloc meilleures vente pour que les produits associés à ce block apparaissent en mode aléatoire afin de ne pas avoir le même affichage des produits pendant x temps.... Merci d'avance pour votre aide! Lucie Link to comment Share on other sites More sharing options...
Yoya Posted February 27, 2013 Share Posted February 27, 2013 Salut et bienvenue, Sur quelle version es tu ? Cdlt, Pierre Link to comment Share on other sites More sharing options...
l.drevet Posted February 27, 2013 Author Share Posted February 27, 2013 Bonjour, version 1.5 Lucie Link to comment Share on other sites More sharing options...
Yoya Posted February 27, 2013 Share Posted February 27, 2013 Je te propose dans ce cas de modifier /modules/blockbestsellers/blockbestsellers.tpl ainsi : $this->smarty->assign(array('best_sellers' =>$best_sellers, 'homeSize' => Image::getSize(ImageType::getFormatedName('home')))); return $this->display(__FILE__, 'blockbestsellers-home.tpl'); par $this->smarty->assign(array('best_sellers' =>shuffle($best_sellers), 'homeSize' => Image::getSize(ImageType::getFormatedName('home')))); return $this->display(__FILE__, 'blockbestsellers-home.tpl'); Cdlt, Pierre Link to comment Share on other sites More sharing options...
Dev On Web Posted February 27, 2013 Share Posted February 27, 2013 Réponse nette et sans bavure 1 Link to comment Share on other sites More sharing options...
l.drevet Posted February 27, 2013 Author Share Posted February 27, 2013 Merci beaucoup, bonne journée, Lucie Link to comment Share on other sites More sharing options...
Le-cathare Posted February 27, 2013 Share Posted February 27, 2013 Bonjour Est il possible de faire pareil sur la version 1.4.10 ? Link to comment Share on other sites More sharing options...
Yoya Posted February 27, 2013 Share Posted February 27, 2013 Oui Link to comment Share on other sites More sharing options...
utaku Posted March 21, 2013 Share Posted March 21, 2013 Hello, J'ai repris ton astuce, pour l'appliqué chez moi, mais cela ne semble pas fonctionner, je suis sous PS 1.5.2 et je ne retrouve pas ce code dans le fichier que tu indique, mais bien dans le fichier php et pas le TPL donc. J'ai donc fait la modification dans le fichier php, mais cela ne fonctionne pas , comment faire ? bien a vous Je te propose dans ce cas de modifier /modules/blockbestsellers/blockbestsellers.tpl ainsi : $this->smarty->assign(array('best_sellers' =>$best_sellers, 'homeSize' => Image::getSize(ImageType::getFormatedName('home')))); return $this->display(__FILE__, 'blockbestsellers-home.tpl'); par $this->smarty->assign(array('best_sellers' =>shuffle($best_sellers), 'homeSize' => Image::getSize(ImageType::getFormatedName('home')))); return $this->display(__FILE__, 'blockbestsellers-home.tpl'); Cdlt, Pierre 1 Link to comment Share on other sites More sharing options...
Yoya Posted March 22, 2013 Share Posted March 22, 2013 Au temps pour moi Utaku, c'est bien dans le fichier .php Essayes de vider le cache de smarty, celui de ton nav et de forcer la compile! Cdlt Pierre Link to comment Share on other sites More sharing options...
utaku Posted March 22, 2013 Share Posted March 22, 2013 Hello, alors j'ai suivi ton conseil , mais cela ne fonctionne pas, voici les test que j'ai effectué Suppression de mes cookies et du cache de mon nav et forcer la compile et désactivation du cache du site . => rien Suppression du cache smarty ( cache et compile ) + forcer la compile et cache du site désactiver => rien J'ai refait la manip juste apres la suppression du cache de mon nav et cookies.=> rien J'ai refais les mêmes test mais avec le force compil activer et le cache du site activer => rien Une idée ? PS : J'utilise le module APC PECL de PHP pour mon site, mais uniquement activé au niveau du serveur, car quand je l'active dans PS , j'ai l'impression que PS est encore plus lent. Merci d'avance Johan Link to comment Share on other sites More sharing options...
Yoya Posted March 22, 2013 Share Posted March 22, 2013 (edited) Une piste : peut etre ton theme a un repertoire /themes/tontheme/modules/blockbestsellers/ avec les fichiers qui vont bien dedans ? Edited March 22, 2013 by Yoya (see edit history) Link to comment Share on other sites More sharing options...
utaku Posted March 22, 2013 Share Posted March 22, 2013 Hello, J'y avais déjà penser, mais rien, le fichier php modifier se trouve aussi bien dans ../modules/blockbestsellers/... que dans le ..themes/monthemes/modules/blockbestsellers/.. C'est pour cela que je ne comprend pas. je vais une fois essayer de rebooter apache sur mon serveur je te tiens au courant Link to comment Share on other sites More sharing options...
utaku Posted March 22, 2013 Share Posted March 22, 2013 bon bah , toujours rien, même après avoir reboot apache, et j'ai même regarder dans le BDD concernant ce module, mais je ne trouve rien de bizarre, donc je ne sais pas.. mais c'est toujours les même produits qui sont afficher si ta une idée Link to comment Share on other sites More sharing options...
Yoya Posted March 22, 2013 Share Posted March 22, 2013 Petit test tout bete : si tu ajoute '<a href="foo">bar</a>' a ton .tpl, il apparait bien ? Link to comment Share on other sites More sharing options...
utaku Posted March 22, 2013 Share Posted March 22, 2013 Alors, j'ai d'abord tester de modifier le fichier TPL celui dans le ../modules/block... mais rien a changer Par contre, quand je fais cette petite astuce dans le fichier TPL se trouvant dans le .../theme/montheme/modules/block... celui-ci affiche bien " bar " voila.. PS : je suis sour PS 1.5.2 Link to comment Share on other sites More sharing options...
Yoya Posted March 22, 2013 Share Posted March 22, 2013 Donc c'est bien dans le .php de themes qu'il faut modifier et ajouter le 'shuffle()' Si tu affiches les erreurs (/config/config.inc.php display error ON), pas d'erreur ? Pierre Link to comment Share on other sites More sharing options...
utaku Posted March 22, 2013 Share Posted March 22, 2013 Hello, nop aucune erreur n'apparait. J'ai pourtant bien le fichier php dans le module ( celui qui se trouve dans le theme ) avec la modification. voici le code complet du dit fichier <?php /* * 2007-2012 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-2012 PrestaShop SA * @version Release: $Revision: 7040 $ * @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 BlockBestSellers extends Module { private $_html = ''; private $_postErrors = array(); public function __construct() { $this->name = 'blockbestsellers'; $this->tab = 'front_office_features'; $this->version = '1.1'; $this->author = 'PrestaShop'; $this->need_instance = 0; parent::__construct(); $this->displayName = $this->l('Top seller block'); $this->description = $this->l('Add a block displaying the shop\'s top sellers.'); } /** * @see ModuleCore::install() */ public function install() { if (!parent::install() || !$this->registerHook('rightColumn') || !$this->registerHook('header') || !$this->registerHook('updateOrderStatus') || !ProductSale::fillProductSales()) return false; return true; } /** * Called in administration -> module -> configure */ public function getContent() { $output = '<h2>'.$this->displayName.'</h2>'; if (Tools::isSubmit('submitBestSellers')) { Configuration::updateValue('PS_BLOCK_BESTSELLERS_DISPLAY', (int)(Tools::getValue('always_display'))); $output .= '<div class="conf confirm">'.$this->l('Settings updated').'</div>'; } return $output.$this->displayForm(); } public function displayForm() { return ' <form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post"> <fieldset> <legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Settings').'</legend> <label>'.$this->l('Always display block').'</label> <div class="margin-form"> <input type="radio" name="always_display" id="display_on" value="1" '.(Tools::getValue('always_display', Configuration::get('PS_BLOCK_BESTSELLERS_DISPLAY')) ? 'checked="checked" ' : '').'/> <label class="t" for="display_on"> <img src="../img/admin/enabled.gif" alt="'.$this->l('Enabled').'" title="'.$this->l('Enabled').'" /></label> <input type="radio" name="always_display" id="display_off" value="0" '.(!Tools::getValue('always_display', Configuration::get('PS_BLOCK_BESTSELLERS_DISPLAY')) ? 'checked="checked" ' : '').'/> <label class="t" for="display_off"> <img src="../img/admin/disabled.gif" alt="'.$this->l('Disabled').'" title="'.$this->l('Disabled').'" /></label> <p class="clear">'.$this->l('Show the block even if no product is available.').'</p> </div> <center><input type="submit" name="submitBestSellers" value="'.$this->l('Save').'" class="button" /></center> </fieldset> </form>'; } public function hookRightColumn($params) { if (Configuration::get('PS_CATALOG_MODE')) return; $currency = new Currency($params['cookie']->id_currency); $bestsellers = ProductSale::getBestSalesLight((int)($params['cookie']->id_lang), 0, 5); if (!$bestsellers && !Configuration::get('PS_BLOCK_BESTSELLERS_DISPLAY')) return; $best_sellers = array(); if ($bestsellers) foreach ($bestsellers as $bestseller) { $bestseller['price'] = Tools::displayPrice(Product::getPriceStatic((int)($bestseller['id_product'])), $currency); $best_sellers[] = $bestseller; } $this->smarty->assign(array( 'best_sellers' =>$best_sellers, 'mediumSize' => Image::getSize('medium_default'), 'smallSize' => Image::getSize('small_default') )); return $this->display(__FILE__, 'blockbestsellers.tpl'); } public function hookLeftColumn($params) { return $this->hookRightColumn($params); } public function hookHeader($params) { if (Configuration::get('PS_CATALOG_MODE')) return; $this->context->controller->addCSS(($this->_path).'blockbestsellers.css', 'all'); } public function hookHome($params) { if (Configuration::get('PS_CATALOG_MODE')) return; $currency = new Currency($params['cookie']->id_currency); $bestsellers = ProductSale::getBestSalesLight((int)$params['cookie']->id_lang, 0, 4); if (!$bestsellers && !Configuration::get('PS_BLOCK_BESTSELLERS_DISPLAY')) return; $best_sellers = array(); if ($bestsellers) foreach ($bestsellers as $bestseller) { $bestseller['price'] = Tools::displayPrice(Product::getPriceStatic((int)($bestseller['id_product'])), $currency); $best_sellers[] = $bestseller; } $this->smarty->assign(array('best_sellers' =>shuffle($best_sellers), 'homeSize' => Image::getSize(ImageType::getFormatedName('home')))); return $this->display(__FILE__, 'blockbestsellers-home.tpl'); } } Comme tu peu le voir, j'ai bien à mon sens modifier avec ton astuce Link to comment Share on other sites More sharing options...
Kreasite Posted March 22, 2013 Share Posted March 22, 2013 Hello, nop aucune erreur n'apparait. J'ai pourtant bien le fichier php dans le module ( celui qui se trouve dans le theme ) avec la modification. Pas de PHP en override dans le thème. Link to comment Share on other sites More sharing options...
utaku Posted March 22, 2013 Share Posted March 22, 2013 Pas de PHP en override dans le thème. Même si j'enlève le fichier blockbestsellers.php dans le dossier .../themes/montheme/modules/blockbestsellers/... rien ne change Link to comment Share on other sites More sharing options...
Kreasite Posted March 25, 2013 Share Posted March 25, 2013 shuffle() renvoi true ou false, ce qui signifie que Smarty à un 1 dans la variable (ou un 0, sinon). En résumé, il faut faire shuffle($array); et puis alors passer le tableau à Smarty. La solution de PrestaEdit : shuffle($best_sellers); $this->smarty->assign(array( 'best_sellers' => $best_sellers, 'homeSize' => Image::getSize(ImageType::getFormatedName('home')) La c'est juste la solution pour un affichage des 4 premiers produits des meilleures ventes en aléatoire et non basé sur l'ensemble des des produits "meilleures ventes". Mais ce n'est pas ce qui est demandé Link to comment Share on other sites More sharing options...
utaku Posted March 25, 2013 Share Posted March 25, 2013 (edited) Hello, merci pour ta réponse, aurais tu donc une idée de comment faire pour que cela prennent sur l'ensemble des produits vendu et non sur uniquement les 4 premiers ? Merci d'avance Bien a toi johan Edit: quand j'applique ton code, j'ai mon site avec une belle page blanche Edited March 25, 2013 by utaku (see edit history) Link to comment Share on other sites More sharing options...
Kreasite Posted March 25, 2013 Share Posted March 25, 2013 Commente cette ligne si tu est inférieur à 1.5.3 // 'homeSize' => Image::getSize(ImageType::getFormatedName('home')) Link to comment Share on other sites More sharing options...
laguepe Posted May 30, 2014 Share Posted May 30, 2014 Bonjour, L'un d'entre vous à une idée pour intégrer le shuffel dans les meilleurs ventes (blockbestsellers) sur la version 1.6.5. Merci d'avance Link to comment Share on other sites More sharing options...
Antonioni Posted July 20, 2014 Share Posted July 20, 2014 Bonjour, Je suis prenant également pour le 1.6 un shuffle des meilleures ventes serait bon. Cordialement, Link to comment Share on other sites More sharing options...
Denys06 Posted August 5, 2014 Share Posted August 5, 2014 UP pour shuffle en 1.5! et 1.6 merci Link to comment Share on other sites More sharing options...
Oron Posted August 5, 2014 Share Posted August 5, 2014 Bonjour, L'un d'entre vous à une idée pour intégrer le shuffel dans les meilleurs ventes (blockbestsellers) sur la version 1.6.5. Merci d'avance Bonjour, Je suis prenant également pour le 1.6 un shuffle des meilleures ventes serait bon. Cordialement, UP pour shuffle en 1.5! et 1.6 merci Bonjour Il est souvent plus utile de créer un nouveau topic que de déterrer un vieux topic. La 1ere chose qui est vu est le titre la deuxième chose qu'on cherche à savoir c'est la date. Quand on vois un topic qui date de je ne sais quand, mais considéré comme un vieux topic ne sera pas lu, pour la simple raison que l'on va se dire : c'est un topic sur une ancienne version, donc qui n'est plus d'actualités. Merci de votre compréhension. Link to comment Share on other sites More sharing options...
Denys06 Posted August 6, 2014 Share Posted August 6, 2014 Pour ma part je préfère poster dans un vieux topique mais qui est peut être suivit par les personnes ayant posté un message, plutôt que de surcharger le forum avec un nouveau sujet "non résolu" qui ferra doublons (il y en a déjà beaucoup sur le forum).Et puis j'ai déjà essayé de faire ce que tu à dis pour d'autres questions et je n'ai obtenus que très rarement une réponse utile Link to comment Share on other sites More sharing options...
nazdupresta Posted November 11, 2015 Share Posted November 11, 2015 je suis preneur aussi si quelqu'un a une solution pour la 1.6.1.2 ... sans grand espoir Link to comment Share on other sites More sharing options...
Oron Posted November 11, 2015 Share Posted November 11, 2015 Bonjour Topic fermé pour éviter de réveiller Lazare chaque année. Link to comment Share on other sites More sharing options...
Recommended Posts