fabien.pelissier Posted December 5, 2010 Share Posted December 5, 2010 Bonjour à tous,Voilà j'ai un petit soucis, je n'arrive pas à comprendre comment marchent les attributs de produits ?J'essaye de "simuler" le fonctionnement du bouton "acheter / ajouter au panier"... En gros j'ai compris qu'il suffit de rentrer une url du style : cart.php?add&id_product=XXX&id_product_attribute=YYYOu tout simplement positionner correctement les input dans la page ayant pour name "id_product" et "id_product_attribute" et les passer en POST à la page cart !Pour le "id_product" c'est assez évident mais pour le "id_product_attribute" la logique m'échappe. Si quelqu'un à ne serait-ce qu'un début de piste ce serait réellement super !!Merci d'avance pour votre aide, Link to comment Share on other sites More sharing options...
InterAgilité Posted December 7, 2010 Share Posted December 7, 2010 Bonjour,Bien que novice en prestashop, je vais tenter de te donner une explication :Comme tu l'as compris la table ps_product permet de stocker les produits ( avec comme identifiant unique id_product ).Associé à cette table tu as la table product_lang qui permet le stockage des textes associés à un produit dans chacune des langues.Si tu gères des attributs pour ton produits, et donc des déclinaisons, la table product_attribut entre en jeu.Chaque enregistrement de la table product_attribute, correspond à une déclinaison ( taille 1 - couleur noir ; taille 2 ; couleur noir ; taille 1 - couleur rouge ... ) , id_product_attribute correspondant à l'identifiant unique de la déclinaison ( dans cette table tu retrouves les infos de la déclinaison, prix, stock .. etc.. ).En complément se trouve les tables product_attribute_combination, qui va définir quelles valeurs d'attributs sont utilisées par ta déclinaison. ( les attributs étant eux stockés dans la table ps_attribute ).Si tu veux je peux détailler l'organisation des tables attributes, attribute_group etc...J'espère avoir pu t'aider...Je vais mettre les mains dans le code, dans le but d'ajouter une double gestion des stocks à Prestashop ( stock interne et stock fournisseur ) donc la première étape aura été de comprendre "grossièrement" le modèle de données ..@+--Christophehttp://www.interagilite.fr Link to comment Share on other sites More sharing options...
fabien.pelissier Posted December 7, 2010 Author Share Posted December 7, 2010 Merci pour ta réponse, tes infos sont en effet super utiles !!!Après vérification en effet le id_product_attribute correspond bien à celui qui est en base Par contre il me reste toujours à comprendre la pièce manquante du puzzle c'est à dire comment depuis la page le système trouve quelle combinaison d'attributs produit correspond à quel id produit ?Je t'avoue bloquer (comme un nul ? lol) sur l'algo de détermination de l'id_attribute en fonction des déclinaisons choisies par l'utilisateur.En gros pour donner un détail purement théorique mettons que je veuille acheter un t-shirt (id_product 8) et je le souhaite en rouge, taille L (id_product_attribute 24) comment le système sait-il que la couleur rouge et la taille L correspondent à l'id 24 ? Dans le même exemple si je change la couleur à blanc par exemple l'id_product_attribute passe à 23... J'ai bien l'impression qu'il y a une sorte de gestion d'incrément mais la logique pour reproduire l'algo derrière m'échappe !Merci d'avance pour toute aide je suis réellement bloqué Link to comment Share on other sites More sharing options...
InterAgilité Posted December 7, 2010 Share Posted December 7, 2010 A mon avis ta réponse se trouve dans la table : ps_product_combination...Dans ton exemple la combinaison Taille / Couleur que tu définis correspond à un certain nombre de product_attribute ... dans le lot, il suffit de prendre ceux qui correspondent au produit "parent" ...Hmm .. je sais pas si je suis clair ?En gros tu as une table des attributs ( classé par groupe )..Groupe : TailleCouleurAttributs1 -> Taille 1 ( Groupe Taille )2 -> Taille 2 ( Groupe Taille )3 -> Rouge ( Groupe Couleur )4 -> Noir ( Groupe Couleur )Ensuite pour chaque produit, tu défini tes déclinaisons.Le produit "Article 1 " ( id_product = 1 ) a par exemple comme déclinaisonArticle 1 - Taille 1 - Noir ( id_product_attribute = 1 ) Article 2 - Taille 2 - Noir ( id_product_attribute = 2 )La table product_attribute_combination va te dire :id_product_attribute / Attribute1 - 1 ( déclinaison 1 a l'attribut taille 1 )1 - 4 ( déclinaison 1 a l'attribut Noir )et 2 - 2 ( déclinaison 1 a l'attribut taille 2 )2 - 4 ( déclinaison 1 a l'attribut Noir )C'est donc comme cela que tu remonteras sur tes product_attribute_id ...Cela en recherchant les déclinaisons ( product_attribute_id ) associé au produit en cours, qui ont la combinaison d'attribut en cours....Ca te semble ok ? Link to comment Share on other sites More sharing options...
fabien.pelissier Posted December 7, 2010 Author Share Posted December 7, 2010 J'ai bien étudié la question et grâce à tes indications je viens en effet de comprendre le fonctionnement merci beaucoup !!!Par contre je remarque qu'avec ce mode de fonctionnement si on veut par exemple gérer des produits "custom" avec de nombreuses options de personnalisation on obtient rapidement un nombre exponentiel de déclinaisons et donc en base ça explose très rapidement (par exemple 8 options de personnalisation par champs avec 5 champs personnalisables ça fait déjà plus de 32.000 combinaisons !!!!) donc niveau perf ça devient vite ingérable.Du coup je vais dériver un peu mais dans ce genre de cas l'idéal ne serait-il pas de carrément "zapper" la gestion des déclinaisons de presta pour inclure une gestion simple du produit avec des options custom gérées indépendamment en base ?Encore merci pour ton aide précieuse, Link to comment Share on other sites More sharing options...
InterAgilité Posted December 7, 2010 Share Posted December 7, 2010 J'ai pas encore trop creusé la customisation, de mon coté mes clients gère surtout 2 attributs taille couleurs.On peut vite arriver à pas mal de combinaisons c'est sur ( pour un de mes clients qui n'est pas sur PrestaShop mais Virtuemart, je dois avoir 5 ou 6000 références produits, et plus de 150 000 déclinaisons en effet ... ). Le site est hébergé sur un serveur dédié et ça tient la route ( mais tous les sites n'ont pas ces besoins là )Mais c'est sur que 5 champs avec 8 valeurs possibles .. ça fait un max de combinaisons pour un seul produit ! et c'est donc impossible à gérer comme cela.Je pense en effet qu'il vaut mieux te pencher sur la customisation offerte par Prestashop .. ( que je n'ai pas pour le moment vraiment utilisé ).La gestion des déclinaisons selon moi est surtout intéressante pour la gestion des stocks ( dans le cadre de vraies déclinaisons, qui sont au final autant d'articles différents dans ton stock ).Dans ton cas, je pense bien qu'il s'agit d'un même article que tu customise ( et pas de 2 articles différents dans ton stock ).Bon courage en tout cas !@+ Link to comment Share on other sites More sharing options...
fabien.pelissier Posted December 7, 2010 Author Share Posted December 7, 2010 En effet, en tout cas merci encore pour tous les tuyaux Link to comment Share on other sites More sharing options...
salazar Posted November 15, 2011 Share Posted November 15, 2011 hi everyone when I try to make test en quantity for combination I don't know where when the quantity is 0 the color of li should be change like in tall(42) if there is any kind of help Link to comment Share on other sites More sharing options...
salazar Posted November 15, 2011 Share Posted November 15, 2011 (edited) in fact I'm new in prestashop and in this forum Edited November 15, 2011 by salazar (see edit history) Link to comment Share on other sites More sharing options...
limitedshop Posted March 18, 2021 Share Posted March 18, 2021 Hello, I'm bringing this topic up again, because my request is related. I am looking to change the value of the product_attribute_id so that : the value id_product_attribute = id_product- id_attribute Example: If my product has as id_product: 250 If the declination in Catalogue > Attributes & characteristics > Size (ID "1") > XL (ID "6") I want my product_attribute to be 250-6 Does anyone know how to make this change? Thanks in advance and have a nice day Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now