Jump to content

Affichage des déclinaisons sous forme de liste


L2D

Recommended Posts

Bonjour à tous,

Je viens de mettre en place Prestashop pour une future boutique. Le produit semble très prometteur et bien écrit (c'est assez rare).
Voici ma demande :
Nous avons certains produits ayant des déclinaisons (poids/couleurs).
Nous recherchons un moyens d'afficher sous un produit (lors de l'affichage en liste) un tableau présentant les déclinaisons, le prix de chacune d'elle, la quantité souhaitée et un bouton achat.

J'ai commencé à rechercher dans le code (theme/product.tpl et product-list.tpl) comment je pouvais le modifier pour détecter lors de l'affichage en liste des produits (product-list.tpl) si c'est un produit ayant des déclinaisons ou non.
En allant plus loin, je suis allé voir la classe Product.php et j'ai vu qu'il y a une fonction hasAttributes().
Mais pour le moment tout ce que je fais ne fonctionne pas.

Savez-vous où faudrait-il que je tape dans le code ou si un module est déjà existant ?

Merci à vous tous et particulièrement à ceux qui prendront le temps de répondre ;)

Link to comment
Share on other sites

à ma connaissance, PS ne comporte pas cette fonction (intéressante en effet) ni de module à dispo. qui ferait cela.
maintenant, je me demande si ça ne serait pas vite ingérable (visuellement), à moins de poser ça ailleurs, dans un tab spécifique par exemple.

Link to comment
Share on other sites

en fait l'idée est de ne pas alourdir la phase d'achat. Dès que l'on a des produits avec des déclinaisons, on est obligé d'aller sur le détail du produit pour choisir une quantité ou une couleur. Cela devient vite pénalisant car le client ne sait pas quelles sont les quantités ou couleurs dispos.
Dans tous les cas, ce qu'il me faut pour mettre en oeuvre cela est de comprendre comment est structuré l'objet Product et son accessibilité dans les templates. Après, je développe tout cela. J'en ferai profiter la communauté le cas échéant.

Si on se base sur le template product.tpl, il y a une notion de group qui est utilisée pour créer le formulaire de sélection de la quantité ou couleur. Je voudrai tout simplement remonter cela dans la page product-list.tpl.

Je continue de chercher...si quelqu'un trouve avant, je suis preneur.

Link to comment
Share on other sites

Bonjour.

C'est justement un module comme ca que je cherche.
En plus, dans l'administration, au moment de créer des déclinaisons, dans le champ "Impact sur le prix" il devrai avoir l'option "Égal".
Comme ca, le prix rentré serait le prix affiché dans le tableau avec les déclinaisons dans la description du produit.

Moi aussi je fais des recherches. Si j'ai des nouvelles, je les posterais ici.

On se tiens au courent.

Merci

Link to comment
Share on other sites

@ramuf merci pour ta recherche...on se tient au courant.

Ce que j'ai trouvé en mettant le site en mode debug c'est l'ensemble des variables géré dans les templates. Dans la page product.tpl, il y a une variable $groups qui contient exactement ce que je souhaite. Toutefois, je ne vois pas comment la récupérer à partir de la page product-list.tpl. Savez-vous où sont déclarées ces variables (globales?) ? Si j'arrive a remonter la variable $groups dans ce template, c'est joué et il n'y a plus qu'à.

A+

Link to comment
Share on other sites

Bonjour L2D,

J'ai reussi à isoler les diverses declinaisons pour chaque produit.
Je ne sais pas si c'est la bonne facon mais ca fonctionne.

Ce qu'ont cherche c'est dans la variable $combinations que tu peut trouver dans le fichier /produit.php (ligne 214).
Pour afficher les plusieres combinaisons voici comment:

Dans le fichier de ton theme/product.tpl, a peu pres à la ligne 181 tu devrais trouver ce code:

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



Avant la fermeture du div "

" ajoute ce code:
            {foreach from=$combinations key=id_product_attribute item=group}

{$group.reference|escape:'htmlall':'UTF-8'} :  {$group.attributes_values[$id_attribute_group]|escape:'htmlall':'UTF-8'} :>
             {/foreach}



Regarde se que ca donne sur ton site web.

Alors,
Reference: $group.reference

Valeur: $group.attributes_values[$id_attribute_group]

etc....etc....

De cette facon, on pourrait isoler toutes les declinaisons.

Laisse moi savoir ce que tu pense. Si tu as besoin d'autres infos, laisse moi savoir.

J'espere que ca aideras.

A+

Link to comment
Share on other sites

Merci ramuf pour cette précision.
C'est exactement ce que je veux faire. Le seul hic, c'est que je voudrai cela, dès que l'on est sur la page listant tous les produits (product-list.tpl) et non la fiche produit. De cette façon, je propose l'achat directement depuis cette liste. Le client n'a pas besoin de se perdre dans les profondeurs des catégories.
L'autre avantage de cela est de permettre une comparaison rapide des produits.

Mais lorsque tu visualises les objets disponibles dans cette page, il n'y a pas l'objet $groups, $combinations, etc. Tu sais pas où l'on pourrait récupérer ces objets pour qu'ils soient disponibles dans la page product-list.tpl.

Je crois qu'à nous deux on va arriver à faire quelque chose de bien. Si la team pouvait nous donner une indication, ce ne serait pas de trop.

A bientôt

Link to comment
Share on other sites

Bonjour, je suis ce post avec un grand intérêt même si techniquement je ne peux pas vous aider dans la mise en place de cette modification qui peut être dans certains cas très intéressante.

L2D, dans le bout de solution donné par (ramuf) on est bien sur la fiche du produit et cela a un grand intérêt surtout si plusieurs déclinaisons d’un produit peuvent être commandées et je prends pour exemple un produit totalement au hasard :

Si je vends des dragées de plusieurs formes, couleurs avec des conditionnements différents (Sachet de 50, 75 et 100 Gr)

- Soit je crée un produit par forme et couleur ensuite le client choisit le conditionnement avec la possibilité de voir directement sous forme de tableau les choix possibles des conditionnements, inscrit la quantité par conditionnement et ajoute au panier et là encore deux solutions :


Un bouton (ajouter au panier) pour chaque ligne.
Un seul bouton (ajouter au panier) mais dans ce cas la quantité par défaut doit être à 0.

- Soit le produit à plusieurs variables de combinaison (choix sur la couleur et le conditionnement) mais là cela peut être plus complexe à mettre en place.


Je mets une petite image pour une explication visuelle :
PS : Je mets en pièce jointe car je ne sais pas comment ajouter l'image dans le message.

5519_B8AC3E4Mmh5MWmI8xf3N_t

Link to comment
Share on other sites

@cameleon... merci pour cette précision. Je suis tout à fait d'accord sur l'utilité, car c'est exactement ce que je souhaite et à faire c'est "aisément" simple à réaliser. Et c'est sur quoi je vais m'attarder.
Toutefois, cela ne résout pas mon problème pour faire pareil sur la page de liste des produits. Le manque est dû au informations qui ne sont pas disponibles dans l'affichage en mode liste (groupe et combination).
@ramuf, si jamais tu ne le sais pas, tu peux récupérer toutes les variables d'une page en plaçant le statement {debug} en début de ton template. Une boite de dialogue s'affichera dans ton navigateur (attention au popup blocker!).

A bientôt

Link to comment
Share on other sites

  • 4 weeks later...

Je suis a la recherche exactement de cette solution,
que je voudrais moi aussi comme étant une option lors de la définition de la déclinaison
parce que le produit peut avoir des déclinaisons dans plusieurs groupes.

Soit a ce moment on pourrait définir le mode d'affichage dans le groupe au lieu de la déclinaison sur le produit.

J'ai déjà fait des tests pour tenter de réaliser cet affichage mais sans succès jusqu'a maintenant.
Mon plus gros problème est que je veux modifier le moins possible le code original de Prestashop pour la facilité de upgrade des prochaines versions.

Mes premiers tests on été au niveau du fichier .tpl mais pour parvenir a un résultat satisfaisant je dois avoir aussi la possibilité d'avoir des options au niveau du coté ADMIN,donc ajout de champs ou de tables dans la base de donnée ainsi que la lecture de ces informations qui elles se font dans product.php qui est à la racine de Prestahop.

Donc je suis vos développements

Link to comment
Share on other sites

  • 9 months later...

Slt,

Je cherche à faire sensiblement la même chose (afficher les attributs et déclinaisons d'un produit dans un module ou dans product-list.tpl). Du coup je poste dans les thread du même ordre vu qu'on est plusieurs a vouloir faire la même chose !

J'ai pas mal avancé et je touche au but, et j'ai lancé un thread avec mon avancement mais j'ai bien peur d'être bloqué. Jme suis dit que ça pourrait être bien de collectiviser les efforts. Et toute aide est la bienvenue :-)

merci

Link to comment
Share on other sites

  • 8 months later...

Bonjour atous
Et merci L2D pour ce topic si intéressant.Moi aussi j’avais eu ce besoin de présenter une liste des déclinaisons d’un produit afin d’aider l’utilisateur de mon site de faire une comparaison entre les différentes déclinaisons mais dans la page product.tpl.
J’ai réussit a lister les déclinaison pour chaque produit tout en ajoutant pour chacune un bouton ajout panier (celui existant par défaut dans mon thème personnalisé) mais le problème c’est quand je choisi n’importe quelle déclinaison c’est le prix de vente par défaut qui s’ajoute toujours au panier .
Et comme mes connaissances en prestashop sont réduites, je sais pas ou exactement le bout de code a modifié pour que le bouton ajout au panier puisse prendre en considération le prix de déclinaison choisie.
Cordialement

Link to comment
Share on other sites

Bonjour a tous
Je travaille avec la version 1.2.5.
J'ai changer la présentation par défaut de PS des déclinaisons dans la fiche produit par une liste des déclinaisons dispo pour chaque produit:

*type1 ---- Prix déclinaison 1----- Bouton ajout panier

*type2 ---- Prix déclinaison 2----- Bouton ajout panier

*type3 ---- Prix déclinaison 3----- Bouton ajout panier
mais le problème est quand je choisi une déclinaisons et je clique sur le bouton ajout panier c'est toujours le prix de vente qui s'ajoute au panier pour toutes les déclinaisons.
Voici mon bout de code pour l'ajout au panier

id|intval}&idproductattribute;={$id_product_attribute|intval}&token;={convertPrice price=$product->getPrice(true, $id_product_attribute, 2)}&add;" rel="ajax_id_product_{$product_attribute.id_product|intval}" name="{l s='Add to cart'}">



Y'a t'il d'autre fichier a changer pour que ça marche a part product.tpl??
Merci

Link to comment
Share on other sites

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