Jump to content

déclinaisons hover product-list.tpl


Recommended Posts

bonjour a tous,

je me suis mis en tête de pouvoir afficher les déclinaisons(couleur) dans la page product-list.tpl et de faire changer l'image du produit avec événement onmouseover sur la déclinaison.

je me suis servi de ce post pour mettre ca en place :

 

http://www.prestashop.com/forums/index.php?/topic/106880-astuce-afficher-la-liste-des-couleurs-dans-la-liste-des-produits-survol/page__view__findpost__p__691635

 

le système marche, les déclinaisons s'affichent et le hover est fonctionnel mais je me retrouves avec l'image d'erreur 404 lors du survol de la déclinaison car il y a une variable qui n'est pas chargée (la variable {$color.id_image} ).

donc j'ai bien rajouté les lignes dans /classes/Product.php

et changé l'affichage dans product-list.tpl

 

je penses qu'il sagit d'un manque dans la requête de Product.php mais quand je la regardes ça me fait peur ...

donc si quelqu’un avait déjà réussi a mettre en place ce système ça serait sympa

 

merci d'avance

 

ps je suis sous ps 1.4.6.2

Link to comment
Share on other sites

je me permet de up car apparement certains ont réussi a faire fonctionner le systeme sur 1.4.6.2.

Je planche dessus depuis hier et je ne trouves as de solution, la variable {$color.id_image} ne s'affiche pas du tout.

voici comment j'ai procédé :

ajouter ceci dans classes/Product.php

/* ajout pour les couleur dans la liste des produits */
 $colors = array();
			  $attributesGroups = Db::getInstance()->ExecuteS('
			  SELECT pai.`id_image`, ag.`id_attribute_group`, ag.`is_color_group`, agl.`name` AS group_name, agl.`public_name` AS public_group_name, a.`id_attribute`, al.`name` AS attribute_name,
			  a.`color` AS attribute_color, pa.`id_product_attribute`, pa.`quantity`, pa.`price`, pa.`ecotax`, pa.`weight`, pa.`default_on`, pa.`reference`, pa.`unit_price_impact`, pa.`minimal_quantity`
			  FROM `'._DB_PREFIX_.'product_attribute` pa
			  LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON pac.`id_product_attribute` = pa.`id_product_attribute`
			  LEFT JOIN `'._DB_PREFIX_.'product_attribute_image` pai ON pai.`id_product_attribute` = pa.`id_product_attribute`
			  LEFT JOIN `'._DB_PREFIX_.'attribute` a ON a.`id_attribute` = pac.`id_attribute`
			  LEFT JOIN `'._DB_PREFIX_.'attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group`
			  LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON a.`id_attribute` = al.`id_attribute`
			  LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON ag.`id_attribute_group` = agl.`id_attribute_group`
			  WHERE pa.`id_product` =  '.(int)$row['id_product'].'
			  AND al.`id_lang` =  '.(int)($id_lang).'
			  AND agl.`id_lang` = '.(int)($id_lang).'
			  AND ag.`is_color_group` = 1
			  GROUP BY attribute_color
			  ORDER BY agl.`public_name`, al.`name`');
			  if (Db::getInstance()->numRows())
			  {
			   foreach ($attributesGroups AS $k => $rowcolo)
			   {
						/* Color management */
						if (isset($rowcolo['attribute_color']) AND $rowcolo['attribute_color'] )
						{
					   $colors[$rowcolo['id_attribute']]['value'] = $rowcolo['attribute_color'];
					   $colors[$rowcolo['id_attribute']]['name']  = $rowcolo['attribute_name'];
					   $colors[$rowcolo['id_attribute']]['id_image']  =(($rowcolo['id_image'] != NULL) ? intval($rowcolo['id_image']) : -1);
						}
			   }
			  }
 $row['colors'] = $colors;

e

t ajouté ceci dans product-list.php

<a href="{$product.link|escape:'htmlall':'UTF-8'}" class="product_img_link" title="{$product.name|escape:'htmlall':'UTF-8'}">
				<img id="img_{$product.id_product}" src="{$link->getImageLink($product.link_rewrite, $product.id_image)}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" height="{$homeSize.height}" width="{$homeSize.width}" />
				{if isset($product.colors) && $product.colors}
					<p>
					{foreach from=$product.colors key='id_attribute' item='color'}
						<a id="{$product.id_product}-{$color.id_image}" class="color_pick" onclick="document.getElementById('img_{$product.id_product}').src='{$img_prod_dir}{$product.id_product}-{$color.id_image}.jpg'" title="{$color.name}">
							<img src="{$img_col_dir}{$id_attribute}.jpg" alt="{$color.name}" />
						</a>
					{/foreach}					  
					 </p>
				{/if}

</a>

 

les déclinaisons(couleur) s'affichent bien mais pas moyen de faire afficher cette variable.

une ame charitable pour me montrer ou je me suis trompé ?

 

merci d'avance

 

ps: le onclick marche bien mais vu que la variable ne s'affiche pas, pas d'update de l'image donc erreur 404 sur l'image :/

Link to comment
Share on other sites

  • 4 months later...
  • 1 month 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...