PHP Include,下拉导航选择问题

时间:2013-02-12 08:21:11

标签: php include

我的导航包含PHP。我想确保显示当前的菜单链接,所以我有一个班级current-menu-item。除下拉链接外,一切正常......

每个页面都有<?php $current_page = "pageName"; ?>

我有<li class="<?php if($current_page == 'dev' || 'seo' || 'mobile' || 'social' || 'hosting') echo "current-menu-item";?>">

在您在任何子链接上显示为选中的主<li>上...但是当我尝试这种方式时,它在我的网站上的每个页面上都显示为选中...

如果您需要参考,我的网站是thwebco.com。

这是代码......

<ul id="nav" class="sf-menu">
                        <li class="<?php if($current_page == 'home') echo "current-menu-item";?>"><a href="index.php">Home<span class="subheader">Welcome</span></a></li>
                        <li class="<?php if($current_page == 'development' || 'seo' || 'mobile' || 'social' || 'hosting') echo "current-menu-item";?>"><a href="#">Services<span class="subheader">What we offer</span></a>
                            <ul>
                                <li><a href="development.php"><span> Web Design & Development</span></a></li>
                                <li><a href="seo.php"><span> Search Engine Optimization </span></a></li>
                                <li><a href="mobile.php"><span> Mobile </span></a></li>
                                <li><a href="social.php"><span> Social Media </span></a></li>
                                <li><a href="hosting.php"><span> Web Hosting & Email </span></a></li>
                            </ul>
                        </li>

                        <li><a href="#">Our Work <span class="subheader">See our work</span></a>
                        <ul>
                                <li class="<?php if($current_page == 'portfolio') echo "current-menu-item";?>"><a href="portfolio.php"><span>Portfolio </span></a></li>
                                <li class="<?php if($current_page == 'case') echo "current-menu-item";?>"><a href="case.php"><span>Case Studies </span></a></li>
                                </ul>
                                </li>
                        <li class="<?php if($current_page == 'about') echo "current-menu-item";?>"><a href="about.php">About Us<span class="subheader">Who we are</span></a>

                        </li>
                        <li class="<?php if($current_page == 'contact') echo "current-menu-item";?>"><a href="contact.php">Contact<span class="subheader">Get in touch</span></a></li>
                        <li class="<?php if($current_page == 'quote') echo "current-menu-item";?>"><a href="quote.php">Get A Quote<span class="subheader">Let us help</span></a></li>
                    </ul>

2 个答案:

答案 0 :(得分:0)

您对if的使用不正确。如果$current_page=='dev'seo,非空字符串总是评估为true,则计算结果为true。

应该是:

<?php if ($current_page == 'dev' || $current_page == 'seo' || $current_page == 'mobile' || $current_page == 'social' || $current_page == 'hosting') echo "current-menu-item"; ?>

甚至更简单:

<?php if (in_array($current_page, array('dev', 'seo', 'mobile', 'social', 'hosting')) echo "current-menu-item"; ?>

答案 1 :(得分:0)

这个if语句:

if($current_page == 'development' || 'seo' || 'mobile' || 'social' || 'hosting')

没有必要这样的INVALID,但你使用它错了。 ||表示OR,因此它主要分裂您的情况。 这是您当前状况的处理方式:

if(
    $current_page == 'development' ||
    'seo' == true; ||
    'mobile' == true; ||
    'social' == true; ||
    'hosting' == true;
)

所以,当然,由于seo,mobile,social和hosting不等于false,总是是真的。

执行您要执行的操作的最佳方法是创建一个具有可接受值的数组,然后使用in_array()检查该值,如下所示:

$pages = Array("development","seo","mobile","social","hosting");
if(in_array($current_page,$pages);