Jump to content

Récupérer sous catégorie d'une catégorie X


Recommended Posts

Bonsoir à tous,
voila je suis en train de développer un menu horizontal déroulant pour mon premier site en prestashop.
J'ai récupéré le module blockcategoriestop du themes PS Alternatif que j'ai adapté à mes besoins.

Le code actuel à modifier est le suivant:

>
   {foreach from=$blockcategoriestop_categories item=blockcategoriestop_category}

getCategoryLink($blockcategoriestop_category.id_category, $blockcategoriestop_category.link_rewrite, $cookie->id_lang )}">
{$blockcategoriestop_category.name}

</pre>
<ul>
           // lister les sous catégories de la catégorie X
</ul>
<br><br>   {/foreach


édit: le code ici se transforme d'une facon bizarre, le premier est en fait


il y a également le fichier .php du module qu'il faut modifier je suppose qui comporte la fonction suivante:

   public function hookTop($params)
   {
       global $smarty, $cookie;

       $id_customer = (int)$params['cookie']->id_customer;
       $id_group = $id_customer ? Customer::getDefaultGroupId($id_customer) : _PS_DEFAULT_CUSTOMER_GROUP_;
       $id_lang = (int)$params['cookie']->id_lang;

       $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
       SELECT c.*, cl.*
       FROM `'._DB_PREFIX_.'category` c 
       LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = '.$id_lang.')
       LEFT JOIN `'._DB_PREFIX_.'category_group` cg ON (cg.`id_category` = c.`id_category`)
       WHERE level_depth = 1
       AND c.`active` = 1
       AND cg.`id_group` = '.$id_group.'
       ORDER BY c.`position` ASC');

       $smarty->assign('blockcategoriestop_categories', $result);
       return $this->display(__FILE__, 'blockcategoriestop.tpl');
   }



Voila c'est peut être un peu gros mais je débute sous prestashop et j'avoue être un peu perdu.
Merci d'avance pour vos réponses

Link to comment
Share on other sites

Bonsoir ,
Tu dois pouvoir compléter le tableau de catégories ainsi :
Après

$result = Db::getInstance.....



en ajoutant

$maxDepth=5 ; /* profondeur souhaitée */
foreach($result as &$category)
{
$catObj = new Category($category['id_category']);
$category=$catObj->recurseLiteCategTree($maxDepth, 0,$id_lang);
}



ensuite pour simuler la récursivité dans smarty , tu dois créer un fichier .tpl supplémentaire , ex subs.tpl , dans lequel le fichier s'inclut lui même.
Et tu inclus ce fichier dans ton bloc ul

Un exemple clair se trouve dans le module natif blockcategories , il te suffit d'étudier de près les fichier blockcategories et bockcategories-tree-branch , sachant que la variable qui contient le tableau dans ton cas est assignée à blockcategoriestop_categories et non blockCategTree . Il te suffit de remplacer ...

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...