xavyeah Posted September 28, 2015 Share Posted September 28, 2015 (edited) Bonjour, j'ai un petit problème sur ma boutique. je viens de faire la mise à jour vers 1.6.1.1 et sur ma page product list, j'ai un bug avec mes déclinaisons de couleurs de produit (color-list-container) Lorsque je vide le cache de ma boutique, j'ai mes petits carrès qui s'affiche bien au survol de ma sourie sur un produit, mais au bout d'1 mn de navigation, cela ne s'affiche plus ??? Dans mon code, entre <dic class="color-list-container"></div> c'est vide !!! alors que 2 minutes avant, j'avais bien <ul class="color_to_pick_list clearfix>...</ul> entre cette balise div. Que ce passe t-il ? Merci de votre retour Edited September 30, 2015 by xavyeah (see edit history) Link to comment Share on other sites More sharing options...
joachim_chp Posted October 13, 2015 Share Posted October 13, 2015 Salut, Je ne sais pas si tu as trouvé la solution, apparement c'est un problème de cache. J'ai trouvé celle-ci comme quick-fix: Créer un override et désactiver le cache. Le mieux se serait de corriger la mise en cache mais pas le temps maintenant: <?php /** * Extend FrontController * * * * * * * * * * * * * * * */ class FrontController extends FrontControllerCore { /** * Override - Renders and adds color list HTML for each product in a list * * Disable caching */ public function addColorsToProductList(&$products) { if (!is_array($products) || !count($products) || !file_exists(_PS_THEME_DIR_ . 'product-list-colors.tpl')) { return; } $products_need_cache = array(); foreach ($products as &$product) { if (!$this->isCached(_PS_THEME_DIR_ . 'product-list-colors.tpl', $this->getColorsListCacheId($product['id_product']))) { $products_need_cache[] = (int)$product['id_product']; } } unset($product); $colors = false; if (count($products_need_cache)) { $colors = Product::getAttributesColorList($products_need_cache); } //Tools::enableCache(); foreach ($products as &$product) { $tpl = $this->context->smarty->createTemplate(_PS_THEME_DIR_ . 'product-list-colors.tpl', $this->getColorsListCacheId($product['id_product'])); if (isset($colors[$product['id_product']])) { $tpl->assign(array( 'id_product' => $product['id_product'], 'colors_list' => $colors[$product['id_product']], 'link' => Context::getContext()->link, 'img_col_dir' => _THEME_COL_DIR_, 'col_img_dir' => _PS_COL_IMG_DIR_ )); } if (!in_array($product['id_product'], $products_need_cache) || isset($colors[$product['id_product']])) { $product['color_list'] = $tpl->fetch(_PS_THEME_DIR_ . 'product-list-colors.tpl', $this->getColorsListCacheId($product['id_product'])); } else { $product['color_list'] = ''; } } //Tools::restoreCacheSettings(); } } Voilou! Link to comment Share on other sites More sharing options...
azzed Posted December 4, 2015 Share Posted December 4, 2015 j'ai exactement le même probleme effectivement en desactivant le cache le probléme est résolut avez vous trouvez une solution depuis ? merci Link to comment Share on other sites More sharing options...
xavyeah Posted December 4, 2015 Author Share Posted December 4, 2015 Bonjour Azzed, et bien, je n'ai pas résolu le problème... du coup, je n'active pas mon cache depuis 3 mois Je suis toujours en 1.6.1 je ferais la mise à jour en janvier. Bon courage Link to comment Share on other sites More sharing options...
azzed Posted December 4, 2015 Share Posted December 4, 2015 J’étais en 1.6.1.1 et je viens de faire la mise à jour en 1.6.1.3 et ça n'as toujours pas réglé le probléme il y a un problème avec le cache. qu'elle impact sur la boutique de le laisser désactivé ? quelqu'un à eu ce genre de probleme ? Link to comment Share on other sites More sharing options...
azzed Posted December 11, 2015 Share Posted December 11, 2015 je cherche encore j'ai trouvé beaucoup de post sur le forum anglais concernant le probleme j'ai testé pas mal de chose mais j’ai toujours le probleme personne à un semblant de solution ? Link to comment Share on other sites More sharing options...
joachim_chp Posted January 7, 2016 Share Posted January 7, 2016 Bonjour, j'ai trouvé la solution ! Il faut créer un override ici: /override/classes/controller/FrontController.php et copier coller le code suivant: <?php /** * Extend FrontController * * * * * * * * * * * * * * * */ class FrontController extends FrontControllerCore { /** * Override - Renders and adds color list HTML for each product in a list * * Disable caching */ public function addColorsToProductList(&$products) { if (!is_array($products) || !count($products) || !file_exists(_PS_THEME_DIR_.'product-list-colors.tpl')) { return; } foreach ($products as &$product) { $products_need_cache[] = (int)$product['id_product']; } unset($product); $colors = Product::getAttributesColorList($products_need_cache); foreach ($products as $key => $product) { $tpl = $this->context->smarty->createTemplate(_PS_THEME_DIR_.'product-list-colors.tpl', $this->getColorsListCacheId($products[ $key ]['id_product'])); if (isset($colors[$products[ $key ]['id_product']])) { $tpl->assign(array( 'id_product' => $products[ $key ]['id_product'], 'colors_list' => $colors[$product['id_product']], 'link' => Context::getContext()->link, 'img_col_dir' => _THEME_COL_DIR_, 'col_img_dir' => _PS_COL_IMG_DIR_ )); $products[ $key ]['color_list'] = $tpl->fetch(_PS_THEME_DIR_.'product-list-colors.tpl', $this->getColorsListCacheId($products[ $key ]['id_product'])); } } } } Ensuite supprimer votre fichier /cache/class_index.php qui sera recrée par Prestashop! Voilou, ça fonctionne chez moi en Prestashop 1.6.1.3 et avec le cache activé! Link to comment Share on other sites More sharing options...
mproject3000 Posted September 17, 2017 Share Posted September 17, 2017 Bonjour, j'ai trouvé la solution ! Il faut créer un override ici: /override/classes/controller/FrontController.php et copier coller le code suivant: <?php /** * Extend FrontController * * * * * * * * * * * * * * * */ class FrontController extends FrontControllerCore { /** * Override - Renders and adds color list HTML for each product in a list * * Disable caching */ public function addColorsToProductList(&$products) { if (!is_array($products) || !count($products) || !file_exists(_PS_THEME_DIR_.'product-list-colors.tpl')) { return; } foreach ($products as &$product) { $products_need_cache[] = (int)$product['id_product']; } unset($product); $colors = Product::getAttributesColorList($products_need_cache); foreach ($products as $key => $product) { $tpl = $this->context->smarty->createTemplate(_PS_THEME_DIR_.'product-list-colors.tpl', $this->getColorsListCacheId($products[ $key ]['id_product'])); if (isset($colors[$products[ $key ]['id_product']])) { $tpl->assign(array( 'id_product' => $products[ $key ]['id_product'], 'colors_list' => $colors[$product['id_product']], 'link' => Context::getContext()->link, 'img_col_dir' => _THEME_COL_DIR_, 'col_img_dir' => _PS_COL_IMG_DIR_ )); $products[ $key ]['color_list'] = $tpl->fetch(_PS_THEME_DIR_.'product-list-colors.tpl', $this->getColorsListCacheId($products[ $key ]['id_product'])); } } } } Ensuite supprimer votre fichier /cache/class_index.php qui sera recrée par Prestashop! Voilou, ça fonctionne chez moi en Prestashop 1.6.1.3 et avec le cache activé! Bonjour, merci pour cette astuce, ça fonctionne! En revanche, le lendemain le couleurs disparaissent à nouveau. Peut être, c'est lié à la génération par Prestashop du ficher /cache/class_index.php ?? Merci pour votre aide Link to comment Share on other sites More sharing options...
PrestashopUser03 Posted November 5, 2018 Share Posted November 5, 2018 Bonjour à tous, Je suis aussi sur prestashop 1.6.1.6 et j'ai le même problème même avec l'override du frontcontroller. Quelqu'un a-t-il des idées? 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