Jump to content
xavyeah

color list container ne s'affiche pas

Recommended Posts

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 by xavyeah (see edit history)

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 ?

Share this post


Link to post
Share on other sites

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 ?

Share this post


Link to post
Share on other sites

Bonjour, j'ai trouvé la solution  :ph34r: !

 

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é!

Share this post


Link to post
Share on other sites

Bonjour, j'ai trouvé la solution  :ph34r: !

 

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

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More