Des soucis smarty pour intégrer mon menu sous cms made simple

Des soucis smarty pour intégrer mon menu sous cms made simple - PHP - Programmation

Marsh Posté le 31-07-2008 à 15:22:47    

Bonjour,
 
Je viens vers vous en fait car je suis en train d'adapter un menu à mon design pour mon futur site web. Le tout utilise smarty et le cms que j'utilise est cms made simple.
Alors j'ai tout d'abord fait ça sur une simple page que vous pouvez retrouver ici
 
Je ne connais pas grand chose à smarty mais après de nombreuses tentatives, ça s'améliore, j'ai mes 4 images du menu affichées mais j'ai également 1, 2, 3 qui s'affichent à côté... J'ai l'impression que {$cpt++} affiche également la variable. Que faire ?
 

Code :
  1. {if $count > 0}
  2. <div id="imageMenu">
  3.     <ul>
  4.         {$cpt = 0}
  5.         {foreach from=$nodelist item=node}
  6.             {if $node->depth == 1}
  7.                 {if $cpt == 0}
  8.                     <li class="accueil"><a href="#"></a></li>
  9.                 {/if}
  10.                 {if $cpt == 1}
  11.                     <li class="quisommesnous"><a href="#"></a></li>
  12.                 {/if}
  13.                 {if $cpt == 2}
  14.                     <li class="activite"><a href="#"></a></li>
  15.                 {/if}
  16.                 {if $cpt == 3}
  17.                     <li class="recrutement"><a href="#"></a></li>
  18.                 {/if}
  19.             {$cpt++}
  20.             {/if}
  21.     {/foreach}
  22.     </ul>
  23. </div>
  24. {/if}

Reply

Marsh Posté le 31-07-2008 à 15:22:47   

Reply

Marsh Posté le 31-07-2008 à 21:47:58    

En fait, le lien c'est ce que ça doit faire au final. Là, c'est juste la découpe d'une page type. Maintenant, j'intègre ça sur cms made simple avec un gabarit. Et pour les menu c'est du smarty.
 
Pour l'instant, voici le rendu que j'ai en local (ce sera plus parlant :D) :
http://images4.hiboox.com/vignettes/3108/a47d38f472ebfbaaa9964b9381dee08e.jpg

Reply

Marsh Posté le 01-08-2008 à 09:30:10    

t'as pas besoin du {cpt++} et de foreach, utilise plutot section:

Code :
  1. {section name=foo loop=nodelist}
  2.  {$smarty.section.foo.index}
  3. {/section}


$smarty.section.foo.index contiendra le compteur que tu cherchais à obtenir.

 


Message édité par anapajari le 01-08-2008 à 09:30:18

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 01-08-2008 à 09:54:08    

je viens d'adapter en testant ceci :
 

Code :
  1. {if $count > 0}
  2. <div id="imageMenu">
  3.     <ul>
  4.  {section name=foo loop=nodelist}
  5.   {if $smarty.section.foo->depth == 1}
  6.    {if $smarty.section.foo.index == 0}
  7.     <li class="accueil"><a href="#"></a></li>
  8.    {/if}
  9.    {if $smarty.section.foo.index == 1}
  10.     <li class="quisommesnous"><a href="#"></a></li>
  11.    {/if}
  12.    {if $smarty.section.foo.index == 2}
  13.     <li class="activite"><a href="#"></a></li>
  14.    {/if}
  15.    {if $smarty.section.foo.index == 3}
  16.     <li class="recrutement"><a href="#"></a></li>
  17.    {/if}
  18.   {/if}  
  19.     {/section}
  20.     </ul>
  21. </div>
  22. {/if}


 
Le problème est que je n'ai plus rien maintenant :) Une idée ? ^^

Reply

Marsh Posté le 01-08-2008 à 10:08:36    

[:prozac]
Lire la doc pour voir comment se servir de section???

Code :
  1. {section name=foo loop=$nodelist}
  2.   {if $nodelist[foo]->depth == 1}
  3. ...



---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 01-08-2008 à 11:29:00    

désolé de t'embêter encore une fois mais ça ne rentre pas dans le if {if $nodelist[foo]->depth == 1}

Reply

Marsh Posté le 04-08-2008 à 09:27:30    

:bounce:

Reply

Marsh Posté le 04-08-2008 à 10:39:11    

Que contient nodelist?
Par ailleurs c'est bien un array et pas une hash ?


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 04-08-2008 à 10:48:40    

nodelist est une liste qui contient toutes les catégories et sous catégories sous CMS Made Simple.
 
Le menu de base sous cmsms ressemble à ceci :
 

Code :
  1. <div id="menuwrapper">
  2. <ul id="primary-nav">
  3. {foreach from=$nodelist item=node}
  4. {if $node->depth > $node->prevdepth}
  5. {repeat string="<ul>" times=$node->depth-$node->prevdepth}
  6. {elseif $node->depth < $node->prevdepth}
  7. {repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
  8. </li>
  9. {elseif $node->index > 0}</li>
  10. {/if}
  11. {if $node->parent == true or ($node->current == true and $node->haschildren == true)}
  12. <li class="menuactive menuparent"><a class="menuactive menuparent"
  13. {elseif $node->current == true}
  14. <li class="menuactive"><a class="menuactive"
  15. {elseif $node->haschildren == true}
  16. <li class="menuparent"><a class="menuparent"
  17. {elseif $node->type == 'sectionheader'}
  18.         <li class="sectionheader"><span> {$node->menutext} </span>
  19. {elseif $node->type == 'separator'}
  20.         <li style="list-style-type: none;"> <hr class="separator" />
  21. {else}
  22. ...........
  23. ...........

Reply

Marsh Posté le 04-08-2008 à 13:05:32    

Je parlais de comment c'est alimenté en PHP ...
Mais bon s'pas grave, ça m'a l'air un peu le bordel donc on va faire au plus simple et qui marche (enfin qui doit), en repartant du code de départ:

Code :
  1. {if $count > 0}
  2. <div id="imageMenu">
  3.     <ul>
  4.         {$cpt = 0}
  5.         {foreach from=$nodelist item=node}
  6.             {if $node->depth == 1}
  7. ...
  8.             {assign var='cpt' value=`$cpt+1`}
  9.             {/if}
  10.     {/foreach}
  11.     </ul>
  12. </div>
  13. {/if}


J'aurais pas fait comme ça mais bon :o


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 04-08-2008 à 13:05:32   

Reply

Marsh Posté le 04-08-2008 à 13:16:09    

pourtant, tu viens de le faire :D
 
Sinon, ça marche (tu sais que je t'aime ?  :lol: ) avec ce code :

Code :
  1. {if $count > 0}
  2. <div id="imageMenu">
  3.     <ul>
  4.         {$cpt = 0}
  5.         {foreach from=$nodelist item=node}
  6.             {if $node->depth == 1}
  7.    {if $cpt == 0}
  8.                 <li class="accueil"><a href="#"></a></li>
  9.             {/if}
  10.             {if $cpt == 1}
  11.                 <li class="quisommesnous"><a href="#"></a></li>
  12.             {/if}
  13.             {if $cpt == 2}
  14.                 <li class="activite"><a href="#"></a></li>
  15.             {/if}
  16.             {if $cpt == 3}
  17.                 <li class="recrutement"><a href="#"></a></li>
  18.             {/if}
  19.   {assign var='cpt' value=`$cpt+1`}
  20.             {/if}
  21.     {/foreach}
  22.     </ul>
  23. </div>
  24. {/if}


Message édité par newty le 04-08-2008 à 13:16:23
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed