emidelight Posted February 10, 2011 Share Posted February 10, 2011 salut la communauté.j'ai toujours trouvé des réponses à mes questions sur le forum, mais là, je ne trouve pas.je souhaite que mes catégories affichent mes produit classés par sous catégorie.EX:catégorie- titre sous catégorie 1produits de la sous catégorie 1- titre sous catégorie 2produits de la sous catégorie 2- titre sous catégorie 3produits de la sous catégorie 3....j'ai adapté mon product-list.tpl comme ceci : {if isset($subcategories)} {foreach from=$subcategories item=subcategory} {$subcategory.name|escape:'htmlall':'UTF-8'} {foreach from=$products item=product name=products} {assign var='productLink' value=$link->getProductLink($product.id_product, $product.link_rewrite, $product.category)} {$product.name|truncate:25|escape:'htmlall':'UTF-8'} {$product.description_short|truncate:30:'...'|strip_tags:'UTF-8'} {displayWtPrice p=$product.price} {/foreach} {/foreach} mais je n'arrive pas à afficher uniquement les produits de la sous catégorie. {foreach from=$products item=product name=products} tous les produits s'affichent.j'essaie de modifier mon category.php $category->name = Category::hideCategoryPosition($category->name); $category->description = nl2br2($category->description); $subCategories = $category->getSubCategories(intval($cookie->id_lang)); $sub_products = $subCategories->getProducts(intval($cookie->id_lang), intval($p), intval($n), $orderBy, $orderWay); $smarty->assign('category', $category); if (Db::getInstance()->numRows()) $smarty->assign('subcategories', $subCategories); if ($category->id != 1) { $nbProducts = $category->getProducts(NULL, NULL, NULL, $orderBy, $orderWay, true); include(dirname(__FILE__).'/pagination.php'); $smarty->assign('nb_products', $nbProducts); $cat_products = $category->getProducts(intval($cookie->id_lang), intval($p), intval($n), $orderBy, $orderWay); } $smarty->assign(array( 'products' => (isset($cat_products) AND $cat_products) ? $cat_products : NULL, 'subproducts' => $sub_products, 'id_category' => intval($category->id), 'id_category_parent' => intval($category->id_parent), 'return_category_name' => Tools::safeOutput(Category::hideCategoryPosition($category->name)), 'path' => Tools::getPath(intval($category->id), $category->name), 'homeSize' => Image::getSize('home') en ajoutant : $sub_products = $subCategories->getProducts(intval($cookie->id_lang), intval($p), intval($n), $orderBy, $orderWay); 'subproducts' => $sub_products, pour pouvoir faire un : {foreach from=$subproducts item=subproduct name=subproducts} mais ça ne fonctionne pas.quelqu'un pourrait-il m'indiquer comment récupérer uniquement les produits des sous catégories pour les afficher dans mon loop ?merci par avance Link to comment Share on other sites More sharing options...
emidelight Posted February 12, 2011 Author Share Posted February 12, 2011 un petit up.personne pour m'aider ? Link to comment Share on other sites More sharing options...
shaoling Posted February 15, 2011 Share Posted February 15, 2011 Je serai également très intéressé, quelqu'un pourrait me (nous) dépanner ?Juste la marche à suivre, j'ai tenté ceci moi : (fichier category.php) if (Db::getInstance()->numRows()) { $souscategories = array(); $i = 0; $nb = 0; foreach($subCategories as $souscategorie) { $categorie = new Category(intval($souscategorie->id_category), intval($cookie->id_lang)); $cats[] = $categorie; $produits = $categorie->getProducts(intval($cookie->id_lang), intval($p), intval($n), $orderBy, $orderWay); $souscategories[] = array('name' => Category::hideCategoryPosition($categorie->name), 'produits' => $produits); if($categorie->getProducts(NULL, NULL, NULL, $orderBy, $orderWay, true) > 0) $nb++; $i++; } $smarty->assign('subcategories', $subCategories); if($nb > 0) { $smarty->assign('souscategories', $souscategories); } } Mais dans le fichier category.tpl, la variable $souscategories semble vide... bizarre ! Link to comment Share on other sites More sharing options...
frato Posted March 6, 2011 Share Posted March 6, 2011 Voici comment je me suis débrouillé pour faire ça. Je bosse sur une version 1.4 de Prestashop.J'ai dupliqué le CategoryController que j'ai placé dans override pour pouvoir le modifier sans toucher au core (voir ce sujet du forum).Dans ce controller, j'ai modifié ça : $this->category->description = nl2br2($this->category->description); $subCategories = $this->category->getSubCategories((int)(self::$cookie->id_lang)); self::$smarty->assign('category', $this->category); if (Db::getInstance()->numRows()) { self::$smarty->assign('subcategories', $subCategories); self::$smarty->assign(array( 'subcategories_nb_total' => sizeof($subCategories), 'subcategories_nb_half' => ceil(sizeof($subCategories) / 2))); // mes ajouts $subProducts = array(); foreach($subCategories as $subCat) { $tmp_cat_obj = new Category($subCat['id_category'], self::$cookie->id_lang); $subProducts[$subCat['id_category']] = $tmp_cat_obj->getProducts((int)(self::$cookie->id_lang), (int)($this-p), (int)($this->n), $this->orderBy, $this->orderWay); } self::$smarty->assign('subProducts', $subProducts); } Donc, pour chaque sous catégorie, je récupère les produits, que je place dans un tableau associatif dont la clé est l'id de la catégorie.Ensuite, dans mon template : {foreach from=$subcategories item=subcat name=subcategories} {$subcat.name|upper} {assign var='tmp_prod' value=$subProducts[$subcat.id_category]} {foreach from=$tmp_prod item=prod name=tmp_prod} {$prod.name} {/foreach} {/foreach} Link to comment Share on other sites More sharing options...
Captain FLAM Posted March 6, 2011 Share Posted March 6, 2011 Pitite erreur :(self::$cookie->id_lang), (int)($this-p), (int)($this->n), $this->orderBy, $this->orderWay);il manque un ">"(self::$cookie->id_lang), (int)($this->p), (int)($this->n), $this->orderBy, $this->orderWay); Link to comment Share on other sites More sharing options...
frato Posted March 7, 2011 Share Posted March 7, 2011 Oups, désolé, il a dû sauter lorsque j'ai mis en forme le code en postant mon message. Link to comment Share on other sites More sharing options...
presta_man_neewbee Posted March 16, 2011 Share Posted March 16, 2011 sltcomment faire pour récupérer tous les attributs des produits de sorte à avoir une mise en page similaire à product-list.tpl ?getProducts( ?) Link to comment Share on other sites More sharing options...
cmarchand Posted April 20, 2011 Share Posted April 20, 2011 sltcomment faire pour récupérer tous les attributs des produits de sorte à avoir une mise en page similaire à product-list.tpl ?getProducts( ?) Je me pose la même question. Quelqu'un a une réponse ? Link to comment Share on other sites More sharing options...
cmarchand Posted April 21, 2011 Share Posted April 21, 2011 J'ai trouvé, il suffit de mettre ce code dans ton template : {foreach from=$subcategories item=subcat name=subcategories} {strip}{$subcat.name|escape:'htmlall':'UTF-8'} {assign var='tmp_prod' value=$subProducts[$subcat.id_category]} {if $tmp_prod} {include file="$tpl_dir./product-list.tpl" products=$tmp_prod} {/if} {/foreach} 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