Glidro Posted June 2, 2015 Share Posted June 2, 2015 (edited) Bonjour, J'ai créer ma page personnalisée sous Prestashop, avec mon template, mais je bloque sur l'affichage des produits. J'ai juste besoin de récupérer les informations sur les produits par catégories etc, si je veux afficher que les noms de produits les avatars etc, bref en requête SQL je saurais faire mais les tables sont nombreuses et pas très claires, du coup j'aimerai m'appuyer sur des fonctions existantes (comme la classe Product & son controlleur). Hélas je comprends pas trop le strict minimum necessaire à l'obtention de ces informations. Par exemple si je veux afficher toutes les infos du produit ID 10 ou tous les produits de la catégorie 20. Merci. Edited June 2, 2015 by Glidro (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted June 2, 2015 Share Posted June 2, 2015 Bonjour, si je ne me trompe pas. Pour récupérer les données d'un produit vous pouvez créer un objet Product en indiquant son id. si vous regardez la Classe Product vous verrez cela : public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) ainsi vous pouvez créer un produit en faisant : $product = new Product(id_produit, true, id_lang); je vous laisse regarder pour les catégories 1 Link to comment Share on other sites More sharing options...
Glidro Posted June 5, 2015 Author Share Posted June 5, 2015 Merci ! Je n'arrive toujours pas à afficher les produits d'une catégorie / sous catégorie. new Category(13,$this->context->language->id, $this->context->shop->id); Quand je var dump, j'ai juste l'information de la catégorie mais pas les produits qui sont liés. Link to comment Share on other sites More sharing options...
Mediacom87 Posted June 5, 2015 Share Posted June 5, 2015 Logique vous n'avez appelé qu'une catégorie, pas des produits. Regardez dans la classe Product ce qu'il est possible de faire. Link to comment Share on other sites More sharing options...
Glidro Posted June 9, 2015 Author Share Posted June 9, 2015 (edited) Merci tout fonctionne Dernière petite question. Comment obtenir le $product.id_product_attribute en fonction de la combinaison (couleur / texture) ? Quand on créer un produit, dans les combinaisons, sur la texture on peut également sélectionner une image du produit, quand on cliquera sur la texture l'image du produit changera en fonction de celle qu'on à choisie. Du coup j'aimerai récupérer cette valeur, mais je ne sais pas comment faire. En gros faudrait que je modifie ma fonction sql pour récupérer également le id_attribute de la table product_attribute_combination Mais je suis coincé .. SELECT ag.`id_attribute_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`,pac.`id_attribute` AS wtfh, pa.`ecotax`, pa.`weight`, pa.`default_on`, pa.`reference` 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_.'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` = '.intval($id_product).' AND al.`id_lang` = '.intval($id_lang).' AND agl.`id_lang` = '.intval($id_lang).' ORDER BY pa.`id_product_attribute` Edited June 9, 2015 by Glidro (see edit history) Link to comment Share on other sites More sharing options...
Glidro Posted June 9, 2015 Author Share Posted June 9, 2015 En gros là le soucis c'est que la requête me retourne une connerie pour mon id_attribute. Je cherche le id_attribute de la table product_attribute_combination (pac), mais WTFH me retourne id_attribute de la table product_attribute (pa) SELECT pac.`id_attribute` AS wtfh, ag.`id_attribute_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` 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_.'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` = '.intval($id_product).' AND al.`id_lang` = '.intval($id_lang).' AND agl.`id_lang` = '.intval($id_lang).' ORDER BY pa.`id_product_attribute` Link to comment Share on other sites More sharing options...
Glidro Posted June 10, 2015 Author Share Posted June 10, 2015 Houla je ne comprends rien Explique ce que tu veux faire à quel endroit ? sur quelle page ? Ouai j'avoue l'explication est un peut étrange. Bon du coup, on peut créer des attributs de produits, par exemple des couleurs ou textures. Exemple je créer un produit Chaussure 1, dans ce produit je vais lui rajouter des Combinaisons exemple Texture 1 / 2 / 3 / 4. Une fois sur la boutique, je clique sur la chaussure, et je vois les miniatures de mes textures, quand je cliquerai sur une de ces miniatures, j'afficherai une nouvelle image en grand sur le produit, cette image je la renseigne également dans la création du produit et de sa combinaison (exemple Texture 1 aura l'image 1, texture 2 image 2 etc). Du coup moi sur ma page personnalisée j'affiche tout ce dont j'ai besoin au niveau de mes produits, et j'arrive même à afficher les attributs. J'ai mon code javascript qui va changer l'image du produit quand je cliquerai sur une miniature, faut que je lui renseigne l'id de l'image du produit correspondant a la Texture en gros désormais. Link to comment Share on other sites More sharing options...
salfai Posted June 10, 2015 Share Posted June 10, 2015 Si j'ai bien compris, tu veut ça : Quand t'es sur la gestion de ton produit. - T'as un nouvel onglet "Texture". - Quand tu clique dessus, tu peut gérer les textures associé à un produit : ajouter, supprimer etc... - Quand t'en ajoute un nouveau t'as une liste déroulante avec "Texture 1", "Texture 2". Tu choisis ce que tu veut, puis tu valide. Côté front end, dans la page d'un produit, tu verras les différente texture disponible. Pour gérer cette association en BDD, tu créer une nouvelle table association avec 2 champs primaires : id_produit - id_texture. Dans la gestion des textures, quand tu valide une texture cela créer un nouvelle enregistrement avec l'id du produit en cours et l'id de la texture. Est-ce bien ça? Link to comment Share on other sites More sharing options...
Glidro Posted June 10, 2015 Author Share Posted June 10, 2015 Si j'ai bien compris, tu veut ça : Quand t'es sur la gestion de ton produit. - T'as un nouvel onglet "Texture". - Quand tu clique dessus, tu peut gérer les textures associé à un produit : ajouter, supprimer etc... - Quand t'en ajoute un nouveau t'as une liste déroulante avec "Texture 1", "Texture 2". Tu choisis ce que tu veut, puis tu valide. Côté front end, dans la page d'un produit, tu verras les différente texture disponible. Pour gérer cette association en BDD, tu créer une nouvelle table association avec 2 champs primaires : id_produit - id_texture. Dans la gestion des textures, quand tu valide une texture cela créer un nouvelle enregistrement avec l'id du produit en cours et l'id de la texture. Est-ce bien ça? Et bien non pas besoin de rajouter de table ni rien, prestashop fait déjà tout celà. Quand on modifie un produit, on peut avoir des combinaisons de produits, et chaque combinaison de produit peut influer sur le produit lui même genre le prix, la photo ou autre. Dans mon cas c'est des couleurs / textures de produits donc la photo doit changer, ainsi quand je change ma combinaison, y a plusieurs photos du produit en questions disponibles genre Chaussure Bleue / Verte / Rouge, et dans mon attribut Texture 1 sur le produit, je lui donne la photo Chaussure Bleue quoi par exemple. Tout est déjà géré par prestashop. Link to comment Share on other sites More sharing options...
salfai Posted June 10, 2015 Share Posted June 10, 2015 Ah dans ce cas faut modifier la vue. Récupérer l'id couleur texture dans la vue et faire un truc du style : <img src="img/texture/{id_texture}.png" /> avec un foreach pour récuperer toute les valeurs/images. Mais le problème c'est que tu n'arrive pas à récuperer les id texture/couleurs au niveau du controleur? Link to comment Share on other sites More sharing options...
Glidro Posted June 10, 2015 Author Share Posted June 10, 2015 Bon bah en fait je viens de capter ... Je cherchais l'id de l'image dans product_attribute_combination alors que c'était absolument pas là qu'il fallait chercher. Du coup juste à modifier ma requête sql avec ceci: LEFT JOIN `'._DB_PREFIX_.'product_attribute_image` pai ON (pai.`id_product_attribute` = pa.`id_product_attribute`) et ça fonctionne Merci quand même pour l'aide apportée 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