it-swarm-eu.dev

Jak mohu získat stránku wp_nav_menu pro jednotlivé kategorie a zvýraznit rodiče?

S novým systémem wp_nav_menu je možné přidat kategorii jako položku menu, takže v mém příkladu mám kategorii 'news', což je podnabídka „About“.

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

Zvýraznění nabídky CSS je vybráno z aktuálního menu-rodič a aktuální menu-předchůdce, takže když jsem v sekci podnabídky, položka nabídky na nejvyšší úrovni (např. 'About') je zvýrazněna při návštěvě 'news'.

Funguje to dobře, kromě toho, když navštívím příspěvek v kategorii 'news', která odpovídá is_single () a in_category ('news').

Pokud vidím v Firebugu, na položku „news“ se použije „current-menu-parent“ a „current-menu-ancestor“, ale to se nevztahuje na položku nabídky „About“.

Je něco, co mi chybí při nastavování menu? Snažil jsem se použít vlastní chodítko, ale zdá se, že počáteční menu předků nejsou nastaveny správně?

Zdá se, že moje jediné řešení (bez toho, abych se uchýlil k ošklivému JQuery hacku), je vytvořit stránku s novinkami, která bude klást dotazy na příspěvky v novinách, místo aby ukazovala na kategorii novinek.

Nějaké nápady?

Díky, Dane

Aktualizace s ukázkou kódu 09/09/2010

V současné době si prohlíží jednu stránku v kategorii Zprávy 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>

Takže vidíte, že "O nás" nemá žádnou CSS třídu, která by označovala, že je rodič právě prohlížené stránky.

Jak si myslím, že by to mělo fungovat (a být upřímný, pokud to neudělá, pak je to chyba kvůli nedostatku implementace):

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

To má current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor CSS třídy připojené k položce nabídky na nejvyšší úrovni. Funguje tímto způsobem pro každou další stránku, nebo dokonce při prohlížení samotné kategorie, nikoli pouze jednu stránku v kategorii.

2
Dan Smart

V současné době to není možné, pokud je položka nabídky stránky nadřazená položce nabídky kategorie.

Ve vašem příkladu if O programu byla kategorie a Zprávy byly kategorie pro děti a potom položka nabídky O kategorii (kategorie) bude přiřazena:

  • proud-post-předchůdce
  • current-menu-parent
  • současný rodič
2
Chris_O

Také jsem měl stejný problém. Nemohl jsem najít php hack, tak jsem použil jeden javascript:

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";
        }
    }
}

Umístěte výše uvedený kód do souboru .js, poté jej označte v záhlaví stránky a zavolejte funkci findAncestor () na window.onload, tj .:

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

Toto téma fóra může být velmi informativní, protože jsem k řešení blíže.

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

Pierre

0
user1060

Souhlasím s Chris_O

Takže mám statickou titulní stránku, 2 hlavní kategorii + 1 podkategorii pod těmito a další stránku. Poháněn Wordpress 3.0.1 a Thesis 1.8, pomocí Wordpress menu místo Thesis menu.

Pro zvýraznění hlavní kategorie jsem použil: .current-post-ancestor a {background: #FFFFFF;}

(toto označení zvýrazní hlavní kategorii, když je na jednom místě)

Pro zvýraznění podkategorie jsem použil: .sub-menu .current-post-ancestor a {background: # F0EEC2;}

(to zvýrazní podkategorii - hlavní kategorie - pokud je na jednom místě podkategorie)

Chtěl bych obě "hlavní kategorii" a "podkategorii" zvýrazněn.

Ale nemůžu ten trik najít.

Pierre

0
user1060