0

我有 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>

4

2 回答 2

1

我是怎么做到的

在 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(还记得$currentPagePHP 吗?)是否匹配当前的 foreach 循环项
  4. 如果是,请将项目设置为选中(使用class='current-menu-item')。
  5. 最后输出<li>元素。
于 2013-03-14T13:17:39.357 回答
0

只需通过本地分配的 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>
于 2012-07-30T15:32:28.367 回答