it-swarm.com.de

Wie kann ich auf meiner Seite mit einer einzelnen Kategorie für wp_nav_menu die übergeordnete Kategorie hervorheben?

Mit dem neuen wp_nav_menu-System ist es möglich, eine Kategorie als Menüelement hinzuzufügen. In meinem Beispiel habe ich also eine Kategorie 'Nachrichten', die ein Untermenüelement von 'Über' ist.

About (page)
--news (category)
--history (page)
--contact us (page)

Das Menü, in dem CSS hervorgehoben wird, wird vom übergeordneten Menü und vom Vorgänger des aktuellen Menüs übernommen. Wenn ich mich also in einem Untermenüabschnitt befinde, wird das Menüelement der obersten Ebene (z. B. "Info") hervorgehoben, wenn ich "Nachrichten" besuche.

Dies funktioniert einwandfrei, abgesehen davon, wenn ich einen Beitrag in der Kategorie "Nachrichten" besuche, der mit "is_single" () und "in_category" ("Nachrichten") übereinstimmt.

Soweit ich in Firebug sehen kann, werden die Elemente 'Current Menu Parent' und 'Current Menu Ancestor' auf das Menüelement 'News' angewendet, jedoch nicht auf das Menüelement 'About' auf oberster Ebene.

Fehlt mir etwas bei der Einrichtung meines Menüs? Ich habe versucht, einen benutzerdefinierten Walker zu verwenden. Es scheint jedoch, dass die ersten Menüvorfahren nicht ordnungsgemäß eingerichtet wurden.

Es scheint, dass meine einzige Lösung (ohne auf einen fiesen JQuery-Hack zurückzugreifen) darin besteht, eine "News" -Seite zu erstellen, auf der die News-Posts abgefragt werden, anstatt auf die "Kategorie" der News zu verweisen.

Irgendwelche Ideen?

Danke, Dan

Update mit Codebeispiel 09/09/2010

So wie es derzeit ist, wird eine einzelne Seite in der Kategorie "Nachrichten" angezeigt http://www.example.com/2010/09/top-news-did-you-know/ :

<li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-28"><a href="http://www.example.com/about/">About Us</a>
<ul class="sub-menu">
<li id="menu-item-71" class="menu-item menu-item-type-taxonomy"><a href="http://www.example.com/category/events/">Events</a></li>
<li id="menu-item-70" class="menu-item menu-item-type-taxonomy current-post-ancestor current-menu-parent current-post-parent current-menu-parent"><a href="http://www.example.com/category/news/">News &#038; views</a></li>
<li id="menu-item-88" class="menu-item menu-item-type-post_type"><a href="http://www.example.com/contact-us/">Contact Us</a></li>
</ul></li>

Sie sehen also, dass "About Us" über keine CSS-Klasse verfügt, die angibt, dass es sich um ein übergeordnetes Element der aktuell angezeigten Seite handelt.

Wie ich denke, sollte es funktionieren (und um ehrlich zu sein, wenn es das nicht tut, dann ist es ein Fehler, weil die Implementierung fehlt):

<li id="menu-item-28" class="menu-item menu-item-type-post_type current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor menu-item-28"><a href="http://www.example.com/about/">About Us</a>
<ul class="sub-menu">
<li id="menu-item-71" class="menu-item menu-item-type-taxonomy"><a href="http://www.example.com/category/events/">Events</a></li>
<li id="menu-item-70" class="menu-item menu-item-type-taxonomy current-post-ancestor current-menu-parent current-post-parent current-menu-parent"><a href="http://www.example.com/category/news/">News &#038; views</a></li>
<li id="menu-item-88" class="menu-item menu-item-type-post_type"><a href="http://www.example.com/contact-us/">Contact Us</a></li>
</ul></li>

Dies hat die CSS-Klassen current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor, die an das Menüelement der obersten Ebene angehängt sind. Dies funktioniert für jede andere Seite oder auch beim Anzeigen der Kategorie selbst, nur nicht für eine einzelne Seite in einer Kategorie.

2
Dan Smart

Derzeit ist dies nicht möglich, wenn ein Seitenmenüelement einem Kategoriemenüelement übergeordnet ist.

Wenn in Ihrem Beispiel Info eine Kategorie ist und Nachrichten eine untergeordnete Kategorie sind , wird der Menüpunkt Info (Kategorie) zugewiesen:

  • aktueller Nachfahr
  • current-Menu-Parent
  • aktuell-nachelternteil
2
Chris_O

Ich hatte auch das gleiche Problem. Ich konnte keinen PHP-Hack finden, also habe ich ein Javascript verwendet:

function findAncestor(){
    var currentParentLi = document.getElementsByClassName("current-menu-parent");
    if(currentParentLi){
        var currentAncestorLi = currentParentLi[0].parentNode.parentNode;
        if(currentAncestorLi && currentAncestorLi.tagName=="LI"){
            currentAncestorLi.className += " current-menu-ancestor";
        }
    }
}

Fügen Sie den obigen Code in eine .js-Datei ein, verweisen Sie darauf im Kopf Ihrer Seite und rufen Sie die Funktion findAncestor () in window.onload auf, d. H .:

<script type="text/javascript">
<!--
window.onload = function() {
    findAncestor()
}
//-->
</script>
1
Meredith Dodge

Sie können dieses Thread-Forum sehr informativ finden, da ich näher an der Lösung bin.

http://diythemes.com/forums/showthread.php?39258-Category-highlighting-for-single-post-%28-wp-menu-%29 .

Pierre

0
user1060

Ich stimme mit Chris_O überein

Ich habe also eine statische Startseite, 2 Hauptkategorien + 1 Unterkategorie darunter und eine weitere Seite. Angetrieben von Wordpress 3.0.1 und Thesis 1.8 unter Verwendung des Wordpress-Menüs anstelle des Thesis-Menüs.

Für die Hervorhebung der Hauptkategorie habe ich verwendet: .current-post-ancestor a {background: #FFFFFF;}

(dies hebt die Hauptkategorie bei einem einzelnen Beitrag hervor)

Zum Hervorheben der Unterkategorie verwendete ich: .sub-menu .current-post-ancestor a {background: # F0EEC2;}

(Dies hebt die Unterkategorie -unter der Hauptkategorie- hervor, wenn Sie sich in einem einzelnen Beitrag der Unterkategorie befinden.)

Ich möchte sowohl "Hauptkategorie" als auch "Unterkategorie" hervorheben.

Aber ich kann den Trick nicht finden.

Pierre

0
user1060