Jump to content

Afficher uniquement les sous-catégories Blockcategories


Recommended Posts

Bonjour,

 

J'ai besoin de modifier le module Blockcategories pour qu'il n'affiche que les sous-catégories de la catégories en cours.

 

J'ai cherché dans le forum mais je n'ai pas trouvé de solution pour PS-1.4....

 

Merci d'avance

 

Ckarone

Link to comment
Share on other sites

salut,

 

dans le fichier category-tree-branch.tpl tu dois avoir :

<li {if $last == 'true'}class="last"{/if}>
<a href="{$node.link|escape:html:'UTF-8'}" {if $node.id == $currentCategoryId}class="selected"{/if} title="{$node.desc|escape:html:'UTF-8'}">{$node.name|escape:html:'UTF-8'}</a>
{if $node.children|@count > 0}
 <ul>
 {foreach from=$node.children item=child name=categoryTreeBranch}
  {if $smarty.foreach.categoryTreeBranch.last}
  {include file=$branche_tpl_path node=$child last='true'}
  {else}
  {include file=$branche_tpl_path node=$child last='false'}
  {/if}
 {/foreach}
 </ul>
{/if}
</li>

 

Je sais pas si tu veux qu'il affiche quand meme les catégories principales ou si tu veux seulement que les sous catégories en cours.

 

bref, pour enlever l'affichage des catégories principales, je pense qu'il faut supprimer la ligne :

<a href="{$node.link|escape:html:'UTF-8'}" {if $node.id == $currentCategoryId}class="selected"{/if} title="{$node.desc|escape:html:'UTF-8'}">{$node.name|escape:html:'UTF-8'}</a>

 

et pour que ce soit que les sous catégories de la catégorie en cours il faut rajouter une condition pour l'affichage des sous cat, du style :

 

{if $node.id == $currentCategoryId}
...
{/if}

 

ce qui donnerai :

 

{if $node.id == $currentCategoryId}
 {if $node.children|@count > 0}
  <ul>
  {foreach from=$node.children item=child name=categoryTreeBranch}
{if $smarty.foreach.categoryTreeBranch.last}
   {include file=$branche_tpl_path node=$child last='true'}
{else}
   {include file=$branche_tpl_path node=$child last='false'}
{/if}
  {/foreach}
  </ul>
 {/if}
{/if}

 

voila, j'ai pas testé mais ça doit être un truc dans ce style :)

Link to comment
Share on other sites

Bonjour ckarone,

 

Je ne pense pas que ce soit réalisable en ne modifiant que le .tpl. En effet, le menu est construit récursivement.

 

Il te faut connaitre dans ton tpl, l'id de la catégorie "mère" des sous catégorie que tu veux afficher.

Pour cela il faut modifier le fichier blockcategories.php pour trouver l'id en question et qu'il le renvoi ensuiite au tpl.

 

Il ne restera plus ensuite qu'a filtrer l'affichage de ton menu suivant cet id.

 

Je ne sais pas si je suis très clair, mais en ayant regarder brièvement les fichiers du module blcokcategories je pense que c'est un des moyens (je pense le plus simple) d'accomplir ce que tu cherches a faire.

... mais je peux tout a fait me tromper. :)

 

J’espère que ça pourra t'aider.

 

Arnaud.

Link to comment
Share on other sites

pardon, j'avais oublié un élément pour l'affichage

 

{if empty($node.children)}
<a href="{$node.link|escape:html:'UTF-8'}" {if $node.id == $currentCategoryId}class="selected"{/if} title="{$node.desc|escape:html:'UTF-8'}">{$node.name|escape:html:'UTF-8'}</a>
{/if}
<li {if isset($last) && $last == 'true'}class="last"{/if}>
{if $node.id == $currentCategoryId}
<ul id="lilumenu{$node.id}" style="display:block;">
 {*<ul id="lilumenu{$node.id}" {if $catParent==$node.id}style="display:block;"{/if}>*}
 {foreach from=$node.children item=child name=categoryTreeBranch}
  {if isset($smarty.foreach.categoryTreeBranch) && $smarty.foreach.categoryTreeBranch.last}
{include file="$branche_tpl_path" node=$child last='true'}
  {else}
{include file="$branche_tpl_path" node=$child last='false'}
  {/if}
 {/foreach}
 </ul>

{/if}
</li>

 

 

j'ai testé chez moi ça marche

Link to comment
Share on other sites

Je cherche a faire la meme chose que toi mais directement dans la page category.php

Je suis a deux doigts de trouver une solution. si j'y arrive, je pourrais te dire les choses a modifier.

Je précise quand même que c'est des modifs dans le code php. je ne sais pas si tu es à l'aise avec ce genre de code...

 

Arnaud.

Link to comment
Share on other sites

Bon j'ai une réponse à ma question !!

Ligne 125 trouvez

public function getTree($resultParents, $resultIds, $maxDepth, $id_category=1, $currentDepth = 0)

et remplacer par

public function getTree($resultParents, $resultIds, $maxDepth, $id_category, $currentDepth = 0)

Ensuite ligne 179 trouver

  $blockCategTree = $this->getTree($resultParents, $resultIds, Configuration::get('BLOCK_CATEG_MAX_DEPTH'));

Et remplacer par

  $blockCategTree = $this->getTree($resultParents, $resultIds, Configuration::get('BLOCK_CATEG_MAX_DEPTH'), $id_category);

Voilà cela fonctionne sur PS 1.4.5.1 sur les pages catégories mais pas sur les pages produits!!

 

Ckarone

Link to comment
Share on other sites

  • 7 months later...
  • 9 months later...

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...