Jump to content

Block Meilleures Ventes En Aléatoire


l.drevet

Recommended Posts

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

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

  • 4 weeks later...

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

  • Like 1
Link to comment
Share on other sites

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

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

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

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

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

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

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 by utaku (see edit history)
Link to comment
Share on other sites

  • 1 year later...
  • 1 month later...
  • 3 weeks later...

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

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

  • 1 year later...
Guest
This topic is now closed to further replies.
×
×
  • Create New...