如何在 smarty .tpl 文件中使用 php 将 class='current-menu-item' 添加到 html 菜单中



我有一个header.tpl文件要包含在我运行Smarty的整个网站中。我需要一个php-if代码,当页面在浏览器中处于活动状态时,使某些导航菜单元素采用类"当前菜单项"。

<ul>
<li class="current-menu-item"><a href="http://localhost/dbk/index.php">Home</a> </li>
<li><a href="#">Company</a>
  <ul class="sub-menu">
    <li><a href="http://localhost/dbk/about.php">About Company</a></li>
    <li><a href="http://localhost/dbk/team.php">Excuslive Team</a></li>
    <li><a href="http://localhost/dbk/global-business.php">Global Business</a></li>
    <li><a href="http://localhost/dbk/contract-manufacturing.php">Contract Manufacturing</a></li>
  </ul>
</li>
<li><a href="#">Our Products</a>
  <ul class="sub-menu">
    <li><a href="http://localhost/dbk/pharmaceutical-products.php">Pharmaceutical Products</a></li>
    <li><a href="http://localhost/dbk/products/herbal-and-food.php">Herbal & Food Supplements</a></li>
    <li><a href="http://localhost/dbk/products/cosmetics.php">Cosmetics</a></li>
    <li><a href="http://localhost/dbk/products/veterinary-products.php">Veterinary Products</a></li>
  </ul>
</li>
<li><a href="http://localhost/dbk/blog">News Room</a></li>
<li><a href="http://localhost/dbk/careers.php">Careers</a> </li>
<li><a href="http://localhost/dbk/contacts.php">Contacts</a></li>

我是如何做到的

在PHP脚本中,执行类似$smarty->assign("curPage", $currentPage);的操作($currentPage是通过$_GET或您的方式设置的)。

我在我的模板文件中使用了这个:

{foreach from=$aMenu key=key item=value}
    {assign var="class" value=""}
    {if $curPage == $value}
        {assign var="class" value=" class='current-menu-item'"}
    {/if}
    <li{$class}><a href="/{$value}">{$key}</a></li>
{/foreach}

在解释的步骤中

  1. 首先,我启动foreach循环,循环所有菜单元素(通过PHP设置)
  2. class变量赋值为空
  3. 检查curPage(还记得PHP中的$currentPage吗?)是否与当前foreach循环项匹配
  4. 如果是,则将项目设置为已选择(使用class='current-menu-item'
  5. 最后输出<li>元素

仅通过本地分配的tpl变量,即:

<li {if $page == "about"}class="current-menu-item"{/if}><a href="http://localhost/dbk/about.php">About Company</a></li> 
<li {if $page == "team"}class="current-menu-item"{/if}><a href="http://localhost/dbk/team.php">Excuslive Team</a></li>

最新更新