2016-07-18 12 views
0

この問題についてのチュートリアルをいくつか見ましたが、どれも私を満足させませんでした。私は閲覧しているページと一致するリストの単一要素を強調したいと思います。私はPHPでコードを作成し、ワードプレスベースのウェブサイトであり、コードは実際に動作します。なぜなら、私がいるuriをエコーすると正しいuriが表示されますが、if文はクラスを追加するために作成したからです...何も出力しませんし、私は理由を理解していないウェブサイト上..とにかく..ここのコードです:各ページで非常にページを閲覧しているときにリスト要素を強調表示します

header.phpの

<ul class="nav nav-pills sliding" id="Jcollapse"> 
       <li class="<?php if ($current == "/why-chickapea/"){ echo "current";}?>"><a href="/why-chickapea/"><span>Why Chickapea?</span></a></li> 
       <li class="<?php if ($current == "/our-pasta/"){ echo "current";}?>"><a href="/our-story/"><span>Our story</span></a></li> 
       <li class="<?php if ($current == "/shop-chickapea/"){ echo "current";}?>"><a href="/shop-chickapea/"><span>Shop</span></a></li> 
       <li class="<?php if ($current == "/recipes/"){ echo "current";}?>"><a href="/recipes/"><span>Recipes</span></a></li> 
       <li class="<?php if ($current == "/blog/"){ echo "current";}?>"><a href="/blog/"><span>Blog</span></a></li> 
      </ul> 

は、私はPHPのスニペットを追加しました:

<?php $current = $_SERVER["REQUEST_URI"]; ?> 

私がvar $ currentをエコーすると、この形式の正しいURLが得られます:/ pagename/

終わりに私は黄色

.current { 
color:yellow; 
} 
.current a { 
color:yellow; 
} 

でクラスの現在のスタイルを私のミスがどこにあるか誰でも知っていますか?

これはページのウェブサイトである:あなたは私のコードを生成するクラスは空ですが、私はそれぞれの値をエコー場合、私は取得するURIが正しいもの

+0

WordPressを使用している場合、間違いは[ナビゲーションメニュー機能](https://codex.wordpress.org/Navigation_Menus)を使用していないことです。 – rnevius

+0

'$ _SERVER ['REQUEST_URI']'に実際に何が入っているかを確認するのと同じように、基本的なデバッグを行いましたか?生成されたhtmlを見て、何かが生成されたのかどうかを確認します。 –

+0

私は自分自身の静的メニューを使用しています。私はそれをwordpressメニューに束縛することなく構築しました。私は私の声明で書いたように、デバッグを行った。私は変数をエコーし​​て、私は正しい値を得ました。これは、私がページに依存するuriです。ホームページの場合は、/ index/ –

答えて

1

最も簡単で見ることができるようにchoosechickapea.com

説明は$ currentが設定される前にヘッダーを出力するというものです。

2番目に簡単な説明は異なるスコープです。これは、非グローバルスコープで$ currentを設定するか、非グローバルスコープでそれを読み取るか、2つのスコープが異なるかどうかを意味します。誰かがワードプレスを言ったので、私は機能にカプセル化があると思うので(範囲を変更する)。 globalキーワードを使用すると、の解決策になる可能性がありますが、それは汚いものです。

+0

のようになります。実際、ヘッダ内に変数を設定しなければなりませんでした。私は各投稿に変数を宣言しています。この理由で、それはうまくいきませんでした。ヒントありがとう! –

+1

これはちょうど「異なるスコープ」です。ただ言って。しかし、お返事のお返事をお待ちしております; o) – Jakumi

+0

私は、論理的に言えば、ページ内のヘッダーの前に変数が宣言されているので、何らかの理由で同じページ(header.php)になければなりません。プログラミングの見通しについては、コードが結果的に読み取られるので、特にPHPでそれほど意味がありません、あなたは思いませんか? –

0

実際のコードがあるしかし、あなたはすでにWordPressの機能を回避しているので、...:

ヘッダにif文を宣言する前に、変数の値を設定します。場合は、例えば必要に一度またはワードプレスでは、さえ持つヘッダをロードする前に、身体に宣言します:それは動作しません

<?php get_header(); ?> 

、変数は、このようなヘッダに設定する必要があります。

関連する問題