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')

それ自体は無効である必要はありませんが、間違って使用しています。||ORを意味するので、それは本質的にあなたの状態を分割します。これが現在の状態の処理方法です。

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

したがって、もちろん、seo、モバイル、ソーシャル、ホスティングはfalseに等しくないため、常にtrueです。

あなたがやろうとしていることを実行する最良の方法は、許容可能な値で配列を作成し、次に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'またはの場合は true と評価されseo、空でない文字列は常に 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"; ?>
于 2013-02-12T08:30:22.220 に答える