maxime_k Posted February 22, 2017 Share Posted February 22, 2017 Bonjour, Mes produits utilisent un attribut de taille. Chaque taille donne un prix différent. Sur la page produit le comportement est parfait. Je souhaite ajouter la liste de choix directement sur les pages de catégorie sans devoir forcer l'utilisateur à entrer dans l'aperçu rapide ou sur la page produit. La version utilisée est 1.6.1.10. Merci de votre retour. Link to comment Share on other sites More sharing options...
maxime_k Posted February 22, 2017 Author Share Posted February 22, 2017 Ça avance. L'affichage de la liste déroulante des déclinaisons de produit (taille par exemple) se fait correctement sur la page catégorie. Voici le code ajouté. En override de CategoryController.php <?php class CategoryController extends CategoryControllerCore { /* function to get all necessary data of products combinations * @param $products An array of products data * return array products combinations */ public function getProductAttributeCombinations($products) { $combinations = array(); foreach($products as $product) { // load product object $product = new Product ($product['id_product'], $this->context->language->id); // get the product combinations data // create array combinations with key = id_product $combinations[$product->id] = $product->getAttributeCombinations($this->context->language->id); } return $combinations; } public function initContent() { parent::initContent(); $products = $this->category->getProducts($this->context->language->id, (int)$this->p, (int)$this->n, $this->orderBy, $this->orderWay); $combinations = $this->getProductAttributeCombinations($products); $this->context->smarty->assign('combinations', $combinations); } } Et dans le product-list.tpl, à l'intérieur de la boucle pour chaque produit : {foreach from=$combinations key=k item=comb} {if $k == $product.id_product} <select name="attribute_combination_{$product.id_product}" id="attribute_combination_{$product.id_product}" class="form-control attribute_select" ref="{$product.id_product}"> {foreach from=$comb item=attr} <option value="{$attr.id_attribute}">{$attr.attribute_name|escape:'html':'UTF-8'}</option> {/foreach} </select> {/if} {/foreach} Donc niveau résultat, j'obtiens bien la liste de choix des attributs. Maintenant, comment faire pour communiquer le choix sélectionné pour l'ajout au panier et la mise à jour de l'affichage du prix ? (même comportement de base que la page produit) Merci d'avance de vos réponses Link to comment Share on other sites More sharing options...
coeos.pro Posted February 23, 2017 Share Posted February 23, 2017 Ne confondez pas id_attribute et id_product_attribute, cette erreur arrive souvent chez ceux qui n'ont qu'un type d'attribut par produit Link to comment Share on other sites More sharing options...
SOURIRE DES SAVEURS Posted May 19, 2018 Share Posted May 19, 2018 Le 22/02/2017 à 10:54 PM, maxime_k a dit : Ça avance. L'affichage de la liste déroulante des déclinaisons de produit (taille par exemple) se fait correctement sur la page catégorie. Voici le code ajouté. En override de CategoryController.php <?php class CategoryController extends CategoryControllerCore { /* function to get all necessary data of products combinations * @param $products An array of products data * return array products combinations */ public function getProductAttributeCombinations($products) { $combinations = array(); foreach($products as $product) { // load product object $product = new Product ($product['id_product'], $this->context->language->id); // get the product combinations data // create array combinations with key = id_product $combinations[$product->id] = $product->getAttributeCombinations($this->context->language->id); } return $combinations; } public function initContent() { parent::initContent(); $products = $this->category->getProducts($this->context->language->id, (int)$this->p, (int)$this->n, $this->orderBy, $this->orderWay); $combinations = $this->getProductAttributeCombinations($products); $this->context->smarty->assign('combinations', $combinations); } } Et dans le product-list.tpl, à l'intérieur de la boucle pour chaque produit : {foreach from=$combinations key=k item=comb} {if $k == $product.id_product} <select name="attribute_combination_{$product.id_product}" id="attribute_combination_{$product.id_product}" class="form-control attribute_select" ref="{$product.id_product}"> {foreach from=$comb item=attr} <option value="{$attr.id_attribute}">{$attr.attribute_name|escape:'html':'UTF-8'}</option> {/foreach} </select> {/if} {/foreach} Bonjour, dans quel endroit de chacun de ces 2 fichiers vous mettez ces morceaux de code ? Je suis sur une version de prestashop 1.6.1.0. Merci de votre aide 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