Jump to content

[Résolu]Couleurs disponibles sur page catégories


Recommended Posts

Bonjour.

 

Bien tenté! Mais c'était un coup de chance...

Comme la solution nous intéressait pour un client, nous nous sommes penchés dessus.

 

Voici la marche à suivre...

Il s'agit d'overrider via le controller Category. C'est idéal dans la mesure où cela n'implique pas une modification du core.

Et d'ajouter le code permettant d'afficher les couleurs, ainsi que le CSS associé.

 

Cette méthode a été testée sous 1.4.8 et 1.4.9. Elle est théoriquement rétrocompatible jusque 1.4.6 :

 

1_ Ouvrir le fichier CategoryController.php dans le dossier controllers et ajouter ce qui suit à partir de la ligne 133 (avant self::$smarty->assign... au cas ou il y aurait déjà eut des overrides précédemment) :

 

foreach ( $this->cat_products as $key => $cat_product ) {
		$product = new Product ( intval ( $cat_product[ 'id_product' ] ), true , intval ( self::$cookie -> id_lang ));
		$colors = array();
		$attributesGroups = $product->getAttributesGroups((int)(self::$cookie->id_lang));
		if ( Db :: getInstance ()-> numRows ()) {
						foreach ( $attributesGroups AS $k => $row ) {
										/* Color management */
										if (isset( $row[ 'attribute_color' ] ) AND $row[ 'attribute_color' ] AND $row[ 'id_attribute_group' ] == $product -> id_color_default ){
														$colors[$row[ 'id_attribute' ]][ 'value' ] = $row[ 'attribute_color' ] ;
														$colors[$row[ 'id_attribute' ]][ 'name' ] = $row[ 'attribute_name' ] ;
										}
						}
		}
		$this->cat_products[$key][ 'colors' ] = $colors ;
}

 

2_ Editer ensuite le fichier product-list.tpl du répertoire de votre thème.

Ajouter ce qui suit juste après la description du produit (après la ligne 35) mais avant le </div> :

 

 

{if !empty($product.colors)}
   {foreach from=$product.colors key=id_attribute item=color}
                <span class="color_picker" style="background: {$color.value};" title="{$color.name}"></span>
   {/foreach}
{/if}

 

 

3_ Ajouter ce qui suit à la fin du fichier product_list.css situé dans le dossier css de votre thème.

 

#product_list .color_picker {
display: block;
float: left;
width: 10px;
height: 10px;
margin: 5px 2px 5px 2px;
cursor: pointer;
border: 1px solid #D0D3D8;
}

 

And Voilà!

 

Si jamais les modification ne s'affichent pas, pensez aux classiques :

_ forcer la compilation

_ supprimer manuellement le cache de smarty

_ supprimer le cache de votre navigateur

 

 

Pour info, quel module faisait cela ?

  • Like 1
Link to comment
Share on other sites

J'ai une chance moi dis donc! Et un gros merci à ton client qui souhaitait cette fonction du coup quand même!

 

Alors chez moi ça marche nikel sauf un soucis de style : les cases couleurs dans les pages catégories s'incrémentent dans le bouton 'ajouter au panier' ce qui à 2 conséquences :

  1. Lorsque l'on clique sur les couleurs (peu importe lesquelles) --> On clique sur le bouton 'Ajouter au panier' --> Le produit va directement dans le panier sans le choix du paramètre couleur ni le passage par la fiche produit.
  2. Le texte 'Ajouter au panier' qui est à la base dans le bouton est décalé juste avant le bouton 'ajouter au produit' donc ce n'est plus cohérent.

Mais sinon à part ça, vous avez rendue ma journée super belle!!!! Merci beaucoup :)

 

Et pour répondre à votre question, le module dont je parlais est celui-ci.

post-377271-0-76231600-1346135522_thumb.png

Edited by Arômes & Gourmandiz (see edit history)
Link to comment
Share on other sites

Content que cette manip' fonctionne.

 

Par contre pour ce qui est du "soucis de style" cela est spécifique à votre thème car l'affichage standard des produits de fait par lignes et non "plusieurs par ligne".

 

Merci donc d'ouvrir un nouveau topic sur ce sujet, avec idéalement une screenshot du soucis. Cela permettra aux passants de s'y retrouver ;)

Link to comment
Share on other sites

Qui ne tente rien n'a rien!

Par contre cela dépasse mon domaine de compétence et je ne sais pas s'il est possible de remonter jusqu'au lien de la fiche produit en partant de la couleur... mais pourquoi pas! Dans le principe c'est "simple" : il suffit d'encadrer le <span> avec des <a>; le tout étant de connaître le bon lien à renvoyer...

 

Un autre développeur ?

Link to comment
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...