子菜单下的PHP Active Menu链接

时间:2014-06-08 10:04:33

标签: php html

我正在尝试做的是在使用PHP查看子菜单页面时激活主菜单链接,因为我的主菜单位于包含文件中。我在包含文件中的代码是:

<p class="menulinks">
<strong class="hide">Main Menu:</strong>
<a <?php if (strpos($_SERVER['PHP_SELF'], 'index.php')) echo 'class="menulink active"';?> class="menulink" href="index.php">Home</a><span class="hide"> | </span>
<a <?php if (strpos($_SERVER['PHP_SELF'], 'food.php')) echo 'class="menulink active"';?> class="menulink" href="food.php">Food</a><span class="hide"> | </span>
<a <?php if (strpos($_SERVER['PHP_SELF'], 'drinks.php')) echo 'class="menulink active"';?> class="menulink" href="drinks.php">Drink</a><span class="hide"> | </span>
<a <?php if (strpos($_SERVER['PHP_SELF'], 'gallery.php')) echo 'class="menulink active"';?> class="menulink" href="gallery.php">Gallery</a><span class="hide"> | </span>
<a <?php if (strpos($_SERVER['PHP_SELF'], 'contact.php')) echo 'class="menulink active"';?> class="menulink" href="contact.php">Contact</a>
</p>

当我在索引页面上并单击子菜单上的'jobs.php'链接时,上面的'index.php'处于非活动状态,因为您将在'jobs.php'页面上但我仍然希望index.php显示为活动状态。下面这样的东西,但它不起作用,PHP新手,我确信它是基本的东西:

<a <?php if (strpos($_SERVER['PHP_SELF'], 'index.php jobs.php')) echo 'class="menulink active"';?> class="menulink" href="index.php">Home</a>

主菜单位于包含文件中的主要原因是将来更容易更改,因为页面太多了。

2 个答案:

答案 0 :(得分:2)

最佳做法是编写自己的功能并通过网站进行检查。然后迭代它们并测试当前是否显示其中一个站点。

示例(已测试):

function isSite(){
    $url = $_SERVER['PHP_SELF'];
    $sites = func_get_args();
    foreach($sites as $site){
        if(strpos($url, $site)) return true;
    }
    return false;
}

所以

if (strpos($_SERVER['PHP_SELF'], 'index.php jobs.php')) echo 'class="menulink active"';

会变成

if (isSite('index.php','jobs.php')) echo 'class="menulink active"';

或者:

if (strpos($_SERVER['PHP_SELF'], 'index.php')) echo 'class="menulink active"';

变为

if (isSite('index.php')) echo 'class="menulink active"';

答案 1 :(得分:0)

我已经改写了wumm的代码并添加了一些东西。

  1. 删除类属性重复。
  2. 使用三元运算符。
  3. 将活动类添加为变量。

  4. <?php
    
        function is_page() {
    
            $currentPage = $_SERVER['PHP_SELF'];
            $pages = func_get_args();
    
            foreach($pages as $page) { 
                if(strpos($currentPage, $page)) return true; 
            }
    
            return false;
    
        }
    
        $selected = ' active';
    
    ?>
    
    <p class="menulinks">
        <strong class="hide">Main Menu:</strong>
        <a class="menulink<?php echo is_page('index.php', 'home.php', 'homepage.php') ? $selected : '';?>" href="index.php">Home</a><span class="hide"> | </span>
        <a class="menulink<?php echo is_page('food.php') ? $selected : '';?>" href="food.php">Food</a><span class="hide"> | </span>
        <a class="menulink<?php echo is_page('drinks.php') ? $selected : '';?>" href="drinks.php">Drink</a><span class="hide"> | </span>
        <a class="menulink<?php echo is_page('gallery.php') ? $selected : '';?>" href="gallery.php">Gallery</a><span class="hide"> | </span>
        <a class="menulink<?php echo is_page('contact.php') ? $selected : '';?>" href="contact.php">Contact</a>
    </p>