我的导航包含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>
答案 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);