2016-07-18 11 views
0

Ich sah ein paar Tutorial zu diesem Problem, aber keiner von ihnen befriedigte mich. Ich möchte das einzelne Element meiner Liste hervorheben, das der Seite entspricht, die ich durchsucht habe. Ich habe den Code mit PHP erstellt, ist eine Wordpress-basierte Website, und der Code funktioniert tatsächlich, denn wenn ich die URI, auf der ich bin echo, wird es die richtige uri anzeigen, aber die if-Anweisung, die ich erstellt, um eine Klasse hinzuzufügen, wenn ich bin auf der Website findet etwas nicht ausgegeben .. und ich verstehe nicht, warum hier sowieso .. .. der Code ist:Markieren Sie ein Listenelement, wenn ich gerade die Seite durchsuchen

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> 

In jeder Seite, die ich einen pHP-Schnipsel hinzugefügt:

Wenn ich den var $ Strom zurückliege, erhalte ich die richtige URL in diesem Format:/Seitenname/

die Klasse Strom mit einer gelben Farbe Am Ende I Stil

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

Weiß jemand, wo mein Fehler ist?

dies ist die Seite Website: choosechickapea.com

Wie Sie die Klasse sehen, dass mein Code ist leer erzeugen wird, aber wenn ich jeden Wert Echo der uri I erhalten wird, ist die richtige

+0

Wenn Sie WordPress verwenden, verwendet der Fehler nicht die Funktion [Navigationsmenüs] (https://codex.wordpress.org/Navigation_Menus). – rnevius

+0

irgendwelche grundlegenden Debugging getan, wie zu überprüfen, was Sie tatsächlich in '$ _SERVER ['REQUEST_URI']'? Sehen Sie sich das generierte HTML an, um zu sehen, was (wenn überhaupt) generiert wurde? –

+0

Ich verwende mein eigenes statisches Menü, das ich erstellt habe, ohne es an das Wordpress-Menü zu binden. Ich habe debuggen, wie ich in meiner Aussage geschrieben habe. Ich echote die Variable und ich erhielt den richtigen Wert, der die URI hängt von der Seite, die ich bin. Für die Homepage ist es etwas wie/index/ –

Antwort

1

Die einfachste Erklärung wäre, dass Sie die Kopfzeile ausdrucken, bevor $ current gesetzt ist.

Die zweite einfachste Erklärung sind unterschiedliche Gültigkeitsbereiche, dh Sie setzen entweder $ current in einem nicht-globalen Bereich oder Sie lesen es in einem nicht-globalen Bereich, und diese beiden (was auch immer sie sind) sind unterschiedlich. Da jemand Wordpress gesagt hat, denke ich, dass es eine Einkapselung in Funktionen gibt (wodurch der Umfang geändert wird). Unter Verwendung des global Schlüsselwortes kann eine Lösung sein, aber eine schmutzige. Aber da Sie bereits Wordpress-Funktionen zu vermeiden ...

+0

Ja, eigentlich musste ich die Variable innerhalb der Kopfzeile setzen. Ich erkläre die Variable für jeden Beitrag, aus diesem Grund hat es nicht funktioniert. Danke für dich Hinweis! –

+1

Dies ist genau "andere Bereiche". sag nur.Aber herzlichen Glückwunsch zu Ihrer richtigen Antwort; o) – Jakumi

+0

Ich meine, logisch, da ich die Variable vor dem Header in der Seite deklariert hat, sollte es sowieso funktioniert haben, aber aus irgendeinem Grund muss es auf der gleichen Seite sein (header.php). Für einen Programmierprospekt hat es vor allem in PHP wenig Sinn, weil der Code konsequent gelesen wird, findest du nicht? –

0

Der eigentliche Code ist:

Bevor im Header erklärt die if-Anweisung, um den Wert der Variablen SET. Wenn Sie im Körper erklären werden, auch vor dem Header mit einem Laden, zum Beispiel erfordert einmal oder in Wordpress:

<?php get_header(); ?> 

Es wird nicht funktionieren, hat die Variable in der Kopfzeile wie folgt festgelegt werden:

<?php $current = $_SERVER["REQUEST_URI"]; ?> 
    <header class="navbar-fixed-top"> 

      <ul class="nav nav-pills sliding"> 
       <li class="<?php if ($current == "/your-url/"){ echo "current";}?>"><a href="/your-url/"><span>your url</span></a></li> 
       <li class="<?php if ($current == "/other-url/"){ echo "current";}?>"><a href="/other-url/"><span>/other url/</span></a></li> 
       </ul> 
</header> 
Verwandte Themen