0

我有一个 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>
4

2 回答 2

0

这个 if 语句:

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

没有必要这样 INVALID ,但你用错了。意思是||或,所以它本质上分裂了你的条件。这是您当前状况的处理方式:

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

因此,当然,由于 seo、移动、社交和托管不等于 false,它总是正确的。

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

$pages = Array("development","seo","mobile","social","hosting");
if(in_array($current_page,$pages);
于 2013-02-12T08:31:53.717 回答
0

你的用法if不正确。如果其中一个$current_page=='dev'or seo,它的计算结果为真,并且非空字符串总是计算为真。

它应该是:

<?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"; ?>
于 2013-02-12T08:30:22.220 回答