Page 1 of 1

[opgelost] Menu 'while' tag error

Posted: Tue Mar 01, 2011 8:08 pm
by rayring
Beste CMSMSérs

Ik gebruik een oude mdblue theme als basis voor een site.
Wanneer ik de menu template gebruik krijg ik:

Code: Select all

string(137) "Smarty error: [in module_db_tpl:MenuManager;mdblue line 17]: syntax error: unrecognized tag 'while' (Smarty_Compiler.class.php, line 590)" string(138) "Smarty error: [in module_db_tpl:MenuManager;mdblue line 21]: syntax error: unrecognized tag '/while' (Smarty_Compiler.class.php, line 590)" string(137) "Smarty error: [in module_db_tpl:MenuManager;mdblue line 58]: syntax error: unrecognized tag 'while' (Smarty_Compiler.class.php, line 590)" string(138) "Smarty error: [in module_db_tpl:MenuManager;mdblue line 62]: syntax error: unrecognized tag '/while' (Smarty_Compiler.class.php, line 590)" 
Dit is de menu template:

Code: Select all

{* CSS classes used in this template:
#active - The active/current page
li#separator - To style the ruler for the separator
span.sectionheader - To style section header *}
{if $count > 0}
<__script__ type="text/javascript" language="javascript" src="lib/helparea.js"></__script>
<div class="menu">
<ul id="menu">
{assign var="prevdepth" value="1"}
{foreach from=$nodelist item=node}
{assign var="prevdepth" value=$prevnode->depth}
{if ($node->depth <= $prevdepth)}
{if ($prevnode->haschildren == "1")}<li></li></ul></div></li> {* bugfix if subitems were not shown in menu *}
{else}
{if $node->depth < $prevdepth}
{assign var="act_depth" value=$prevdepth-$node->depth}</li>
{while (($act_depth > 0) and ($collapseopened > 0))}
</ul></div></li>
{assign var="act_depth" value=$act_depth-1}
{assign var="collapseopened" value=$collapseopened-1}
{/while}
{else}
</li>
{/if}
{/if}
{/if}

{if $node->type == 'separator'}
<li id="separator"></li>
{else}
{if $node->current == true}<li id="active">
{else}<li>
{/if}
<a id="pic{$node->id}" 
{if $node->type != 'sectionheader'}
href="{$node->url}"
{if $node->target ne ""}
target="{$node->target}"
{/if}
{/if}
{if $node->haschildren == '1'}
{assign var="collapseopened" value=$collapseopened+1} onclick="expandcontent('sub{$node->id}')"
{else}
{/if} style="cursor:hand; cursor:pointer">
{if $node->type == 'sectionheader'}<span class="sectionheader">{/if}
{$node->menutext}
{if $node->type == 'sectionheader'}</span>{/if}
</a>
{if $node->haschildren == '1'}<div id="sub{$node->id}" class="expand"><ul>{/if}
{/if}
{assign var="prevnode" value=$node}
{/foreach}

{if ($prevnode->haschildren == "1")}<li></li></ul></div></li> {* bugfix if subitems were not shown in menu *}
{else}
{if $prevnode->depth > 1}
{assign var="act_depth" value=$prevnode->depth-1}</li>
{while (($act_depth > 0) and ($collapseopened > 0))}
</ul></div></li>
{assign var="act_depth" value=$act_depth-1}
{assign var="collapseopened" value=$collapseopened-1}
{/while}
{else}
</li>
{/if}
{/if}

</ul>
</div>
{/if}
Ik heb een post gelezen dat 'while' niet als tag ondersteund wordt maar geen concreet antwoord gevonden.

Iemand een idee...

Re: Menu 'while' tag error

Posted: Tue Mar 01, 2011 10:33 pm
by Jos
{while} bestaat inderdaad niet als smarty functie

Iets soortgelijks aan wat jij doet zit ook in de standaard menu-templates, namelijk

Code: Select all

{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
Je zou dus voor de parameter times eerst kunnen uitrekenen welke van de twee variabelen $act_depth of $collapseopened het hoogste is en die waarde kunnen gebruiken.

Re: Menu 'while' tag error

Posted: Wed Mar 02, 2011 7:08 pm
by rayring
Jos bedankt voor je reactie.

Ik denk dat het voor mij handiger is om een ander menu template te gebruiken heb alleen wat moeite met de styling wanneer ik bijvoorbeeld minimal_menu.tpl selecteer dan is het menu goed maar worden er bullets voor gezet ik probeer deze te verwijderen met list-style:none; echter ze blijven zichtbaar.

Ik zoek nog even verder over CSS en stylen van het menu maar blijf dit lastig vinden waarschijnlijk door mijn gebrek aan php en css kennis.

Als iemand nog een verticaal templatje heeft met een stylesheet hou ik me aanbevolen.. :D

De bedoeling is dat de bullets weg zijn en ik witte vlakken om het menu krijg.... op deze site http://bit.ly/h9e29u

;D

Re: Menu 'while' tag error

Posted: Wed Mar 02, 2011 8:09 pm
by Dr.CSS
#navcontainer ul {list-style:none}

Re: Menu 'while' tag error

Posted: Thu Mar 03, 2011 11:22 am
by rayring
Dank Dr CSS ;D werkt perfect.
Heb inmiddels ook de borders en background color juist.
1 ding lukt me nog niet helemaal en dat is de menutext links uitlijnen en de hover over de gehele breedte van de menubalk laten vallen..

Met jullie hulp begin ik de verbanden te zien... ;D DANK! ;D

Re: Menu 'while' tag error

Posted: Thu Mar 03, 2011 11:46 am
by Jos
Je hebt de style voor het a element in het begin van je stylesheet naar mijn idee teveel verminkt.

Code: Select all

a:hover {
   display:block;
   background-color: #000000;
   width:142px;
   color:#ffffff;
   text-decoration:none;
}
Die display:block hoort daar niet thuis. de with ook niet
De opmaak die je hier definieert, moet gelden voor alle links, niet voor je menu.

Code: Select all

.menu{
   margin-left:-7px;
list-style:none;


}
#menu li {
   margin:0px;
ik zie in je html geen div met class of id menu. dus die style doet niks??
En is het nu een class of een id?

Beter eerst de boel wat opschonen dus ;)

Re: Menu 'while' tag error

Posted: Thu Mar 03, 2011 1:19 pm
by rayring
Jos wrote:Je hebt de style voor het a element in het begin van je stylesheet naar mijn idee teveel verminkt.

Code: Select all

a:hover {
   display:block;
   background-color: #000000;
   width:142px;
   color:#ffffff;
   text-decoration:none;
}
Die display:block hoort daar niet thuis. de with ook niet
De opmaak die je hier definieert, moet gelden voor alle links, niet voor je menu.

Code: Select all

.menu{
   margin-left:-7px;
list-style:none;


}
#menu li {
   margin:0px;
ik zie in je html geen div met class of id menu. dus die style doet niks??
En is het nu een class of een id?

Beter eerst de boel wat opschonen dus ;)
Je hebt helemaal gelijk wat het opschonen betreft ben nu even aan het proberen.

De div die ik in de template aanroep is niet "menu" maar "navcontainer" kortom ik moet menu nog verwijderen hiermee was ik eerder aan het stoeien... :)

Heb je een idee hoe ik de huidige menutext nu links align, ik weet het ik moet me meer gaan verdiepen in de materie... maar al doende leert men ;D

Re: Menu 'while' tag error

Posted: Thu Mar 03, 2011 1:30 pm
by rayring
Ik hen inmiddels de "menu" classes verwijderd en de "verminking" ;D bij de a hover weggehaald en deze ingevoegd:

#navcontainer li a:hover {
display:block;
background-color: #000000;
width:142px;
color:#ffffff;
text-decoration:none;
}

Re: Menu 'while' tag error

Posted: Thu Mar 03, 2011 3:59 pm
by Jos
goed bezig geweest ;)

Nu hoef je alleen nog dit:

Code: Select all

#navcontainer {
   background-color:#C5C3C3;
   float:left;
   min-height:380px;
   overflow:hidden;
   padding-left:8px;
   padding-top:30px;
   width:180px;
   font-size:125%;
}

#navcontainer ul {
   display: block;
   background-color: white;
   border: 2px solid #F1F1F1;
   margin-left: -7px;
   width: 142px;
   list-style:none;
}

#navcontainer li a:hover {
   display:block;
   background-color: #000000;
   width:142px;
   color:#ffffff;
   text-decoration:none;
}
te vervangen door dit:

Code: Select all

#navcontainer {
   background-color:#C5C3C3;
   float:left;
   width:188px;
   font-size:125%;
}

#navcontainer ul {
   background-color:white;
   border:2px solid #F1F1F1;
   list-style:none;
   margin:30px 0 0 0;
   padding:0;
}

#navcontainer li a {
   display:block;
   padding:5px 10px;
}

#navcontainer li a:hover {
   background-color:#000000;
   color:#ffffff;
   text-decoration:none;
}
Zoek de 21 verschillen ;D

En ik vraag me af wat dat stukje * html #navcontainer er in doet. Volgens mij kan dat eruit?

Re: Menu 'while' tag error

Posted: Thu Mar 03, 2011 5:43 pm
by rayring
Kijk dat werkt super!!! 1000 maal dank Jos.. ;D

Ik heb inmiddels de * html #navcontainer verwijderd deze heeft inderdaad geen functie meer.

Ik ben weer een stap verder en weer wat geleerd... nogmaals dank!