it-swarm-id.com

Bagaimana cara mengatur item menu aktif?

Saya memiliki situs yang memiliki banyak menu. Salah satunya adalah menu utama yang memiliki beberapa item. Item-item ini terhubung ke area utama situs, dan masing-masing area utama ini memiliki satu menu spesifik. Saat saya berada di halaman arahan salah satu area utama ini, item di menu utama aktif, tetapi ketika saya berada di halaman internal salah satu area ini, item di menu utama tidak aktif .

Apakah ada cara untuk membuatnya aktif secara otomatis?

Saya mencoba menggunakan menu_position tetapi tampaknya tidak berfungsi.

5
Luiz Guilherme

Konteks menyediakan fungsionalitas ini di luar kotak.

10
Capi Etheriel

Ada banyak cara. Saya daftar di sini hanya hal-hal yang kompatibel dengan D7 dan akhirnya pada D6.

Gunakan modul

Beri kode barang Anda

Sekarang mereka adalah API asli menu_tree_set_path untuk mengatur jalur yang ingin Anda gunakan untuk menghitung jejak menu aktif.

Anda juga dapat bekerja di theme_links tetapi tetapi saya merekomendasikan untuk menggunakan menu_tree_set_path sehingga modul lain tahu apa tautan aktif Anda. Keuntungannya adalah Anda dapat menggunakan fungsi ini dalam tema Anda tanpa membuat modul.

Perlu diingat, menu_position memiliki API untuk membuat aturan khusus Anda.

Jadi apa yang harus saya gunakan ???

Itu tergantung kebutuhan Anda. jika Anda memiliki aturan sederhana seperti: untuk jenis simpul ini/views/taksonomi saya ingin menu aktif ini, konteksnya baik.

Jika Anda memiliki struktur url yang baik (autopat) daripada mengikuti struktur menu Anda, menu_trail_by_path hanya akan berfungsi tanpa usaha.

Saya tidak pernah menggunakan menu_position ... jadi saya bisa tahu.

Jika Anda memerlukan logika khusus, mengkodekan barang-barang Anda tentu lebih cepat daripada membuat 40 konteks atau aturan ...

13
gagarine

Cara termudah adalah dengan membuat item menu dari halaman "internal" Anda (subhalaman milik area/halaman arahan Anda) anak-anak dari item menu halaman arahan.

Sesuatu seperti:

 menu tautan utama 
 | 
 + - halaman pertama item menu 
 | | 
 | + - item menu halaman 1 internal 
 | + - internal halaman 2 item menu 
 | 
 + - landing page 2 item menu 
 | 
 + - halaman internal 3 item menu 
 + - item menu halaman 4 internal 

Jika Anda harus menyimpannya di menu terpisah, Anda mungkin harus bermain dengan theme_links () untuk menjaga kelas "active-trail" dan/atau "active" yang tepat.

3
Maciej Zgadzaj

Mungkin modul Blok Men akan membantu Anda.

(Sehubungan dengan pendekatan yang diuraikan oleh Maciej di atas).

Dari halaman proyek Blok Menu:

Ini menyediakan blok pohon menu yang dapat dikonfigurasi dimulai dengan level apa pun dari menu apa pun. Dan lagi!

Jadi, jika Anda hanya menggunakan fitur tautan menu Utama tema Anda, Anda dapat menambahkan dan mengonfigurasi blok “Menu utama (level 2+)”. Blok itu akan muncul begitu Anda berada di salah satu halaman menu Utama dan akan menampilkan hierarki menu untuk level ke-2 (dan lebih dalam) dari menu Utama Anda dan akan meluas saat Anda melintasi pohon. Anda juga dapat membatasi kedalaman hierarki menu (mis. “Menu utama (level 2-3)”) dan/atau perluas semua sub-menu anak (mis. “Menu utama (level diperluas 2+)”).

1
iainp999

Anda juga dapat menggunakan hook_translated_menu_link_alter(). Ini akan sedikit rumit.

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