it-swarm-tr.com

Wp_nav_menu tek kategori sayfamın üst öğeyi vurgulamasını nasıl sağlayabilirim?

Yeni wp_nav_menu sistemiyle, bir menü maddesi olarak bir kategori eklemek mümkündür, bu yüzden örneğime 'Hakkında' nın bir alt menü maddesi olan 'haberler' kategorisine sahibim.

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

CSS'yi vurgulayan menü, geçerli menü üst ve geçerli menü atalarından seçim yapar, böylece bir alt menü bölümünde olduğumda, 'haberler'i ziyaret ettiğimde üst düzey menü öğesi (örneğin' Hakkında ') vurgulanır.

Bu, is_single () ve in_category ('news') ile eşleşen 'news' kategorisindeki bir gönderiyi ziyaret ettiğim zamanlar dışında da işe yarıyor.

Firebug'da görebildiğim kadarıyla, 'current-menu-parent' ve 'current-menu-ata' 'news' menü öğesine uygulanır, ancak 'About' (üst düzey) menü öğesine uygulanmaz.

Menümü kurarken kaçırdığım bir şey mi var? Özel bir yürüteç kullanmayı denedim, ancak ilk menü atalarının doğru şekilde kurulmamış olduğu anlaşılıyor.

Tek çözüm yolum (kötü bir JQuery hack'üne başvurmadan), haberleri 'kategorisini' işaret etmek yerine, haber yayınlarını sorgulayan bir 'haber' sayfası oluşturmak.

Herhangi bir fikir?

Teşekkürler Dan

Kod örneği ile güncelleme 09.09.2010

Şu anda olduğu gibi, Haber kategorisinde tek bir sayfa görüntüleniyor 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>

Öyleyse, "Hakkımızda" bölümünde, şu anda görüntülenen sayfanın bir ebeveyni olduğunu belirten bir CSS sınıfının bulunmadığını görüyorsunuz.

Nasıl çalışması gerektiğini düşünüyorum (ve dürüst olmak gerekirse, bunu yapmazsa, uygulama eksikliği nedeniyle bir hatadır):

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

Bu, Üst seviye menü öğesine eklenen current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor CSS sınıflarına sahiptir. Bu, diğer sayfalar için veya kategorinin kendisini görüntülerken bile, bir kategorideki tek bir sayfayı değil, bu şekilde çalışır.

2
Dan Smart

Şu anda, bir sayfa menü öğesi bir kategori menü öğesinin ebeveyni ise bu mümkün değildir.

Örneğinizde eğer Hakkında bir kategori ve Haber alt kategoriseydi Hakkında (kategori) menü öğesi atanır:

  • akım sonrası atası
  • geçerli menü ebeveynli
  • akım sonrası ebeveyn
2
Chris_O

Ben de aynı sorunu yaşıyordum. PHP hack bulamadım, javascript kullandım:

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

Yukarıdaki kodu bir .js dosyasına koyun, sonra sayfanızın başına gösterin ve window.onload adresindeki findAncestor () işlevini çağırın.

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

Bu konudaki forumumuzu çok bilgilendirici bulabilirsiniz, çünkü ben çözüme yaklaşıyorum.

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

Pierre

0
user1060

Chris_O ile aynı fikirdeyim

Bu yüzden statik bir ön sayfam, altlarında 2 ana kategori + 1 alt kategori ve başka bir sayfam var. Tez menüsü yerine Wordpress menüsünü kullanarak Wordpress 3.0.1 ve Thesis 1.8 tarafından sürülür.

Kullandığım ana kategoriyi vurgulamak için: .current-post-aces a a {background: #FFFFFF;}

(bu tek gönderide ana kategoriyi vurgular)

Alt kategoriyi vurgulamak için kullandım: .sub-menu .current-post-aces a {background: # F0EEC2;}

(Bu, alt kategorinin tek bir postasındaki - ana kategorinin alt kategorisini vurgulayın)

Hem "ana kategori" ve "alt kategori" olmasını istiyorum vurgulanmış.

Ama numarayı bulamıyorum.

Pierre

0
user1060