Ç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