Jump to content

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)
Link to comment
Share on other sites

  • 2 weeks later...

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

  • 1 month later...

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

  • 4 weeks later...

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

Link to comment
Share on other sites

  • 1 year later...

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

Link to comment
Share on other sites

  • 1 year later...

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...