我正在使用php和smarty编写导航菜单。我需要动态修改样式表中的一些值。例如,对于每次迭代,id =" nav1"应更改为id =" nav1",id =" nav2",id =" nav3"等等。我可以使用$ caty @index(索引数组),但它从0开始。
此外,在子菜单中,第一个列表项应该只包含class =" topli"其余的不应该包括class =" topli"他们应该是这样的:
<li>
<a href="categories.php?id={$inc.catid|stripslashes}">{$inc.name|stripslashes|replace:" ":" "}</a>
</li>
实际脚本:
<div id="topnav_container">
<div id="topnav">
<ul id="nav">
{foreach from=$categori item=caty}
{assign var="ifavaible" value=$caty@total}
{if $caty@index < {$toplinks}}
{if $rewritemod == 2}
<li class="nav-item" id="nav1">
<a href="categories.php?id={$caty.catid|stripslashes}">{$caty.name|stripslashes}</a>
{/if}
<div>
<ul class="child">
{foreach from=$subcat item=inc}
{if $inc.cord neq 0 && $caty.catid eq $inc.parent}
{if $rewritemod == 2}
<li class="topli">
<a href="categories.php?id={$inc.catid|stripslashes}">{$inc.name|stripslashes|replace:" ":" "}</a>
</li>
{/if}
{/if}
{/foreach}
</ul>
</div>
</li>
{/if}
{/foreach}
</ul>
</div>
<!-- end: #topnav -->
</div>
答案 0 :(得分:0)
第一个问题,如何获得“nav1”,“nav2”,“nav3”等等。您可以使用从1开始的@ iteration
,而不是从{0}开始的@index
<li class="nav-item" id="nav{$caty@iteration}">
第二个问题,如何仅将类应用于第一个元素。传统的方法是使用@first
关键字,当你迭代数组的第一个元素时,true
,但是你似乎有很多if语句在内循环,所以我不会依赖它。相反,如果已设置类,则可以保存参数,如此
{foreach from=$subcat item=inc}
{$first = true}
{if $inc.cord neq 0 && $caty.catid eq $inc.parent}
{if $rewritemod == 2}
<li {if $first}class="topli"{/if}>
<a href="categories.php?id={$inc.catid|stripslashes}">{$inc.name|stripslashes|replace:" ":" "}</a>
</li>
{$first = false}
{/if}
{/if}
{/foreach}