Jump to content

Si déclinaison existante, le mentienner sur "product-list.tpl"


Recommended Posts

Bonjour,

Il manque quelque chose d'assez utile à mon avis sur prestashop.
c'est une mention sous forme d'icône, ou texte qui indique aux client lorsqu'un produit possède plusieurs attributs (par exemple la couleur).

Lors de la visualisation du produit sur "product-list.tpl" ou même "homefeatured.tpl" il n'y a rien pour préciser au clients que le produit existe en plusieurs déclinaisons, il faut pour cela cliquer sur le produit afin de se rendre compte que plusieurs attributs sont dispos ! Personnellement, je trouve très important de le signaler ! Car si la photo de couverture présente le produit en orange, que le client n'aime pas cette couleur, il ne cliquera pas forcément sur le produit pour se rendre compte ensuite qu'il existe en plusieurs couleurs...

J'ai pensé aussi afficher en photo de couverture tous les produits avec toutes les couleurs différentes mais si il y en a beaucoup c'est problématique, sans compter le risque de confusion pour le client qui serait tenter de penser que le prix correspond a tous les produits affichés sur la photo :-)

J'ai donc essayé de modifier moi même le code mais sans sucés, un peu d'aide serait la bienvenue, je m'explique :

sous product.tpl j'ai à cet endroit l'affichage des attributs :

{if isset($groups)}
           <!-- attributes -->

           {foreach from=$groups key=id_attribute_group item=group}


{$group.name|escape:'htmlall':'UTF-8'} :
               {assign var='groupName' value='group_'|cat:$id_attribute_group}

                   {foreach from=$group.attributes key=id_attribute item=group_attribute}
{$group_attribute|escape:'htmlall':'UTF-8'}
                   {/foreach}


           {/foreach}

           {/if}



j'ai donc logiquement placé ce bout de code dans product-list.tpl :

//si attribut est dispo, on affiche :
{if isset($groups)}

{/if}



Est-ce que quelqu'un aurait une idée ?
Merci d'avance

Link to comment
Share on other sites

  • 5 months later...

Bonsoir link80, je suis tout à fait d'accord avec toi quant à l'affichage des attributs dans le fichier product-list.tpl
C'est important pour ne pas perdre une vente !

As tu réussi a faire ce que tu voulais car moi je n'y suis jamais arrivé.

@+

Link to comment
Share on other sites

Il y a une solution qui avait été donné par un membre du forum, et qui consistait à rajouter la mention "à partir de" devant le prix dans product-list. Le "à partir de" ne s'affiche ainsi que lorsque le produit contient des déclinaisons !

Le code à rajouter est :

{if ($product.id_product_attribute!='')}A partir de {/if}



Pour ma part, j'avais rajouter un peti "span class"

Link to comment
Share on other sites

  • 2 months later...

Bonjour,

C'est exactement ce que je cherche à faire:
Afficher une image "+ de couleurs" sur la page product_list.tpl sous chacun des articles qui possèdent au mois 2 couleurs

Je débute dans le développement et j'ai essayé avec

{if ($product.id_product_attribute!='')}


+ de couleurs



{/if}



J'ai bien mon image qui apparait. Mais elle apparaît à partir du moment où un article possède au moins un attribut et n'importe quel attribut.

J'ai pensé travaillé avec
$product.colors key=id_attribute item=color

Mais je ne m'en sors pas.

Si qqu'un pouvait me donner une piste ...
Merci bcp
Link to comment
Share on other sites

En fait, la difficulté est que le PHP ne renvoie pas les bonnes informations au template, il faut modifier le PHP.

Côté PHP
Dans category.php, à la ligne 59, après $cat_products = .....
Vous pouvez rajouter ça :

            $i = 0;
           foreach ($cat_products as $item)
           {    
               $bcolors = false;
               $buffer = new Product($item['id_product'], true, intval($cookie->id_lang));
               $bgroups = $buffer->getAttributesGroups(intval($cookie->id_lang));
               foreach($bgroups as $bitem)
               {
                   if ($bitem['id_attribute_group'] == 2 && !$bcolors)
                   {
                       $bcolors = true;
                       $cat_products[$i]['is_color'] = '1';
                   }
               }
               $i++;
           }



Le 2 est à changer selon l'ID de votre group Colors, par défaut il est à 2.
En clair, ici on va chercher les IDS des groupes pour chaque produit de la catégorie, et on rajoute un champ 'is_color' si le produit à un attribut de couleur.
Du coup, dans le template, on va pouvoir récupérer : $product.is_color et identifier si il y a des couleurs.

Côté template :

{if ($product.is_color == 1)}{l s='Plus de couleurs'}{/if}



Le résultat ici : http://theme01.ebuildy.com/2-musique-ipods
J'ai bien afficher 'Plus de couleurs' si les produits ont des couleurs supplémentaires.

Link to comment
Share on other sites

Désolé mais je n'y arrive pas, j'ai collé le code dans category.php qui est à la racine et j'ai l'erreur suivante (j'ai essayé de le déplacer mais ça ne change rien à part le numéro de la ligne qui pose problème).

Parse error: syntax error, unexpected T_VARIABLE in /homez.379/letsgocr/www/skyeshop/category.php on line 61


Aurais tu une idée (fresh install 1.3.2) ?
merci

Link to comment
Share on other sites

Désolée, je me suis ravie trop vite...

J'ai bien mon image "+ de couleurs" qui apparaît mais elle est présente pour tous les articles qui ont au moins un attribut couleur.
Et comme ils ont ts un attribut couleur, mon image est présente partout.
Je ne la souhaite que sur les articles qui ont au moins 2 couleurs

J'ai bien dans category.php:

if ($category->id != 1)
       {
           $nbProducts = $category->getProducts(NULL, NULL, NULL, $orderBy, $orderWay, true);
           include(dirname(__FILE__).'/pagination.php');
           $smarty->assign('nb_products', $nbProducts);
           $cat_products = $category->getProducts(intval($cookie->id_lang), intval($p), intval($n), $orderBy, $orderWay);
                       $i = 0;foreach ($cat_products as $item){$bcolors = false;$buffer = new Product($item['id_product'], true, intval($cookie->id_lang));
                       $bgroups = $buffer->getAttributesGroups(intval($cookie->id_lang));foreach($bgroups as $bitem){if ($bitem['id_attribute_group'] == 2 && !$bcolors){$bcolors = true;$cat_products[$i]['is_color'] = '1';[spam-filter]
                       $i++;} 
       }



Et dans mon product-list.tpl:

{if ($product.is_color == 1)}


                      {/if}



Et j'ai un id_attribute_group pour les couleurs qui est à 2

Est-ce que j'ai oublié quelque chose ?

Merci d'avance

Link to comment
Share on other sites

Bonsoir Fonzie,

D'après ce qu'explique Vincent, le 2 de id_attribute_group est l’ID du group Colors (en tout cas celui par défaut) mais cela ne signifie pas qu'il y a 2 couleurs ou plus.


Le 2 est à changer selon l'ID de votre group Colors, par défaut il est à 2.
En clair, ici on va chercher les IDS des groupes pour chaque produit de la catégorie, et on rajoute un champ 'is_color' si le produit à un attribut de couleur.
Du coup, dans le template, on va pouvoir récupérer : $product.is_color et identifier si il y a des couleurs.


Quel est l'intérêt d'avoir attribut couleur pour tous les articles ?
Link to comment
Share on other sites

Bonsoir Mr Viny,

Ma boutique vend des vêtements pour femmes.
Imaginons que j'ai

- une robe grise en S, M et L
attribut couleur: gris

- un pantalon bleu en S, M et L et le même en noir S, M et L
attribut couleur: bleu
attribut couleur: noir

Sur product-list.tpl, je veux afficher un logo "+ de couleurs" uniquement sous le pantalon
Imaginons que ce soit le pantalon en bleu que j'affiche sur product-list, je veux que le client sache qu'il existe dans une autre couleur: noir. Alors que pour la robe, je ne veux pas afficher le logo car il n'y a pas d'autre couleur que celle affichée sur product-list.

Or pour le moment les différentes solutions m'affichent "+ de couleurs" à partir du moment où un article a 1 couleur, ce qui est le cas pour tous mes articles.

J'espère que je suis suffisament claire.

Link to comment
Share on other sites

J'ai bien compris le problème, je cherchais juste à comprendre la raison de mettre un attribut couleur s'il n'y a qu'une seule couleur dispo pour un produit.
Sur ma boutique je n'ai mis des attributs couleurs que lorsqu'il y a plus d'une couleur pour l'article en question.


- une robe grise en S, M et L
attribut couleur: gris
Link to comment
Share on other sites

Bonjour,
J'indique un attribut couleur pour tous mes articles même s'il n'y a qu'une seule couleur pour que mes fiches produits soient toutes uniformes.
Je ne me vois pas indiquer la couleur un coup dans la description, un coup dans le menu déroulant couleur etc ...
Je ne veux pas perdre le client.
En pièce jointe, un ex de fiche produit.

De plus, après un rapide coup d'oeil sur les gros sites de vente en ligne de vêtements pour femmes, c'est ainsi qu'ils présentent leurs articles.

33604_PaQdb6MX3eijgVcNIGng_t

Link to comment
Share on other sites

Donc, il faut un minimum de 2 couleurs pour afficher le is_color ?

Je pense qu'avec cette modification, cela devrait être bon :

$i = 0;
$bcolors = 0;
           foreach ($cat_products as $item)
           {    
               $buffer = new Product($item['id_product'], true, intval($cookie->id_lang));
               $bgroups = $buffer->getAttributesGroups(intval($cookie->id_lang));
               foreach($bgroups as $bitem)
               {
                   if ($bitem['id_attribute_group'] == 2)
                   {
                       $bcolors++;
                   }
               }

                if ($bcolors > 1)
                   {
                      $cat_products[$i]['is_color'] = '1';
                   }
               $i++;
               $bcolors = 0;
           } 



A tester ....

Link to comment
Share on other sites

Ca fonctionne si mon article à une couleur mais également 1 seule taille.
Mais si j'ai un pull gris en s et gris en m, alors là, ça m'affiche le logo "+ de couleurs" alors qu'il n'y a qu'une seule couleur.
Le problème vient du fait que s'il y a 2 fois la même couleur, il considère qu'il y a deux couleurs.

Link to comment
Share on other sites

  • 3 weeks later...
  • 1 month later...
  • 2 months later...
  • 1 month later...

Un petit UP ? J'ai réussie a afficher le "Plus de couleurs" pour les pages product-list.

Mais concernant les pages comme new-product.php qui liste les nouveautés ainsi que les pages manufacturer.php qui liste les produits des fabricants, il faut faire des modifs que je ne trouve pas ?

Quelqu'un a une idée ?

Merci d'avance

Link to comment
Share on other sites

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