Jump to content
stevent

Afficher liste catégories avec un ID précis

Recommended Posts

Bonjour à tous,

 

Dans un module sur le site suivant qui se trouve ICI , un tpl est utilisé pour lister des catégories : 

{if isset($catalog_tree) && $catalog_tree.children|@count}
    {if $catalog_tree.children|@count >= 3}
        {assign var='col' value=4}
    {else}
        {math equation='round(12 / x)' x=$catalog_tree.children|@count assign='col'}
    {/if}
    <div id="ukoocompat_catalog_block">
        <ul class="root" id="menu">
            {foreach from=$catalog_tree.children item=child name=catalog_tree}
                {if $smarty.foreach.catalog_tree.last}
                    {include file="$catalog_branche_tpl_path" node=$child last='true'}
                {else}
                    {include file="$catalog_branche_tpl_path" node=$child}
                {/if}
            {/foreach}
        </ul>
    </div>
{/if}

Jusque là tout va bien. donc pour tester, choisissez on choisis un véhciules ( VOLKSWAGEN, GOLF 4 ( 1998 - 2004 ), 3.2 )

 

On obtient le menu rouge qui est généré par le code indiqué ci -dessus.

 

Mon soucis : 

 

Je souhaite afficher EN DESSOUS de cette liste d'autres catégories avec un ID PRECIS . Donc je voudrais ajouter {if $category->id == '43'} tout simplement donc comme ceci : 

<div id="ukoocompat_catalog_block">
        <ul class="root" id="">
            {foreach from=$catalog_tree.children item=child name=catalog_tree}
                {if $category->id == '43'}
                {if $smarty.foreach.catalog_tree.last}
                    {include file="$catalog_branche_tpl_path" node=$child last='true'}
                {else}
                    {include file="$catalog_branche_tpl_path" node=$child}
                {/if}
                {/if} 
            {/foreach}
        </ul>
</div>

Ce qui me semble logique..... ? mais un message d'erreur s'affiche : 

 

Notice: Undefined index: category in /home/autosporxq/new/tools/smarty/sysplugins/smarty_internal_templatebase.php(157) : eval()'d code on line 80

Notice: Trying to get property of non-object in /home/autosporxq/new/tools/smarty/sysplugins/smarty_internal_templatebase.php(157) : eval()'d code on line 80

Notice: Trying to get property of non-object in /home/autosporxq/new/tools/smarty/sysplugins/smarty_internal_templatebase.php(157) : eval()'d code on line 80

 

Quelqu'un saurait il svp me faire savoir ou est mon erreur ?? Merci d'avance !

 

 

Share this post


Link to post
Share on other sites

Et si tu var_dumpes ce que contient child dans la boucle ?...

Merci beaucoup pour ta réponse, saurais tu stp m'en dire un peu plus sur cette solution ? Elle ne me parle pas du tout.. :/

 

Suite à quelques recherches il semble que je dois ajouter ceci dans un php ? var_dump($var);

 

merci,

Share this post


Link to post
Share on other sites

Non tu peux invoquer des fonctions PHP directement via Smarty.

Donc ça donne quelque chose comme

<div id="ukoocompat_catalog_block">
        <ul class="root" id="menu">
            {foreach from=$catalog_tree.children item=child name=catalog_tree}
                {$child|@var_dump}
                {if $smarty.foreach.catalog_tree.last}
                    {include file="$catalog_branche_tpl_path" node=$child last='true'}
                {else}
                    {include file="$catalog_branche_tpl_path" node=$child}
                {/if}
            {/foreach}
        </ul>
    </div>

Attention ça va te debugger le contenu de la variable $child à chaque tour de boucle donc tu vas te retrouver avec des gros pavé d'informations.

Donc déjà met ta boutique en maintenance pendant que tu fais ça.

Et même avec ça si tu n'as pas de notion de programmation PHP tu ne vas pas être plus avancé...

Share this post


Link to post
Share on other sites

En effet mais je suis débrouillard donc merci déjà pour ton aide... 

En résultat de première boucle j'ai : 

 

  • array(8) { ["id"]=> string(2) "50" ["category_link"]=> string(56) "http://new.monsite.com/50-accessoires-competition" ["link"]=> string(126) "http://new.monsite.com/module/ukoocompat/listing?id_search=1&id_category=50&filters1=11749&filters4=11773&filters5=6920" ["name"]=> string(23) "ACCESSOIRES COMPETITION" ["link_rewrite"]=> string(23) "accessoires-competition" ["desc"]=> string(0) "" ["level_depth"]=> int(1) ["children"]=> array(6) { [0]=>

Share this post


Link to post
Share on other sites

Alors vraisemblablement là où tu avais mis {if $category->id == '43'} dans ton 1er post, il faudrait que tu remplaces par {if $child->id == '43'} et ça devrait faire le taf

 

Edit : ou plutôt {if $child.id == '43'}

Edited by BeComWeb (see edit history)
  • Like 1

Share this post


Link to post
Share on other sites

De rien.

N'oublie pas de passer le topic sur "[Résolu]" et bon week-end

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More