web-gelistirme-sc.com

Bir menü öğesi etkin olarak nasıl ayarlanır?

Çok fazla menüye sahip bir sitem var. Bunlardan biri az öğe içeren ana menüdür. Bu öğeler sitenin ana alanlarına bağlanır ve bu ana alanların her birinin belirli bir menüsü vardır. Bu ana alanlardan birinin açılış sayfasında olduğumda, ana menüdeki öğesi etkin, ancak bu alanlardan birinin dahili sayfasında olduğumda ana menüdeki öğe etkin değil .

Otomatik olarak etkin hale getirmenin bir yolu var mı?

Menu_position kullanarak denedim ama çalışmıyor gibi görünüyor.

5
Luiz Guilherme

Context bu işlevselliği kutudan çıkarır.

10
Capi Etheriel

Onların birçok yolu var. Burada sadece D7 ile uyumlu ve sonunda D6 ile uyumlu şeyleri listeliyorum.

Bir modül kullanın

Eşyalarınızı kodlayın

Onların menü aktif iz hesaplamak için kullanmak istediğiniz yolu ayarlamak için artık bir yerel API menu_tree_set_path .

Ayrıca theme_links içinde çalışabilirsiniz, ancak diğer modülün aktif bağlantınızın ne olduğunu bilmesi için menu_tree_set_path kullanmanızı öneririz. Avantajı, temanızdaki bu işlevi bir modül oluşturmadan kullanabilmenizdir.

Menu_position'ın özel kurallarınızı oluşturmak için bir API'ya sahip olduğunu unutmayın.

Peki ne kullanmalıyım ???

İhtiyacınıza bağlı. gibi basit kurallarınız varsa: bu düğüm türü/görünümleri/sınıflandırma için bu aktif menü istiyorum, bağlam iyidir.

Menü yapınızı takip etmekten daha iyi bir url yapınız (autopath) varsa, menu_trail_by_path hiçbir çaba harcamadan çalışır.

Ben asla menu_position kullanmadım ... çok söyleyebilirim.

Bazı özel mantığa ihtiyacınız varsa, eşyalarınızı kodlamak kesinlikle 40 bağlam veya kural oluşturmaktan daha hızlıdır ...

13
gagarine

En kolay yol, yalnızca "dahili" sayfalarınızın (alanlarınıza/açılış sayfalarınıza ait alt sayfalar) bu menü öğelerini açılış sayfaları menü öğelerinin alt öğeleri yapmaktır.

Gibi bir şey:

 birincil bağlantılar menüsü 
 | 
 + - açılış sayfası 1 menü öğesi 
 | | 
 | + - dahili sayfa 1 menü öğesi 
 | + - dahili sayfa 2 menü öğesi 
 | 
 + - açılış sayfası 2 menü öğesi 
 | 
 + - dahili sayfa 3 menü öğesi 
 + - dahili sayfa 4 menü öğesi 

Bunları ayrı menülerde tutmanız gerekiyorsa, uygun "aktif iz" ve/veya "etkin" sınıfları korumak için muhtemelen theme_links () ile oynamanız gerekir.

3
Maciej Zgadzaj

Belki Menü Bloğu modülü size yardımcı olacaktır.

(Maciej'in yukarıda ana hatları çizdiği yaklaşımla birlikte).

Menü Bloğu proje sayfasından:

Herhangi bir menünün herhangi bir seviyesinden başlayarak menü ağaçlarının yapılandırılabilir bloklarını sağlar. Ve dahası!

Dolayısıyla, yalnızca temanızın Ana menü bağlantıları özelliğini kullanıyorsanız, bir "Ana menü (seviye 2+)" bloğu ekleyebilir ve yapılandırabilirsiniz. Bu blok, Ana menünün sayfalarından birinde bulunduğunuzda görünür ve Ana menünüzün 2. düzeyi (ve daha derin) için menü ağacını gösterir ve ağaçta ilerledikçe genişler. Ayrıca menü ağacının derinliğini sınırlandırabilirsiniz (örn. “Ana menü (2-3. Seviyeler)”) ve/veya tüm alt alt menüleri genişletebilirsiniz (örn. “Ana menü (genişletilmiş seviyeler 2+)”).

1
iainp999

hook_translated_menu_link_alter() işlevini de kullanabilirsiniz. Bu biraz zor olurdu.

/**
 * Implements hook_translated_menu_link_alter()
 */
function Module_translated_menu_link_alter(&$item, $map) {

    if ($item['menu_name'] == 'menu-name') {

        //check first two arg from url
        $path = arg(0)."/".arg(1);

        //add class active-trail if path match
        if (strpos($item['link_path'], $path) !== false) {
            $item['in_active_trail'] = true;

        }

    }
}
0
batMask