it-swarm-vi.com

Làm thế nào để thiết lập một mục menu hoạt động?

Tôi có một trang web có rất nhiều menu. Một trong số đó là menu chính có ít món. Các mục này liên kết đến các khu vực chính của trang web và mỗi khu vực chính này có một menu cụ thể. Khi tôi ở trang đích của một trong những khu vực chính này, mục trên menu chính sẽ hoạt động, nhưng khi tôi ở trang nội bộ của một trong những khu vực này, mục trên menu chính không hoạt động .

Có cách nào để làm cho nó hoạt động tự động?

Tôi đã thử sử dụng menu_poseition nhưng có vẻ như nó không hoạt động.

5
Luiz Guilherme

Ngữ cảnh cung cấp chức năng này ra khỏi hộp.

10
Capi Etheriel

Họ là rất nhiều cách. Tôi liệt kê ở đây chỉ những thứ tương thích với D7 và cuối cùng trên D6.

Sử dụng mô-đun

Mã hóa nội dung của bạn

Giờ đây, chúng là API gốc menu_tree_set_path để đặt đường dẫn bạn muốn sử dụng để tính toán đường dẫn hoạt động của menu.

Bạn cũng có thể làm việc trong theme_links nhưng tôi khuyên bạn nên sử dụng menu_tree_set_path để các mô-đun khác biết liên kết hoạt động của bạn là gì. Ưu điểm là bạn có thể sử dụng chức năng này trong chủ đề của mình mà không cần tạo mô-đun.

Hãy ghi nhớ, menu_poseition có API để tạo quy tắc tùy chỉnh của bạn.

Vậy tôi nên sử dụng cái gì ???

Nó phụ thuộc vào nhu cầu của bạn. Nếu bạn có các quy tắc đơn giản như: đối với loại nút/lượt xem/phân loại nút này tôi muốn menu hoạt động này, ngữ cảnh là tốt.

Nếu bạn có cấu trúc url tốt (autopath) hơn theo cấu trúc menu của bạn, menu_trail_by_path sẽ chỉ hoạt động mà không cần bất kỳ nỗ lực nào.

Tôi chưa bao giờ sử dụng menu_poseition ... vì vậy tôi rất có thể nói.

Nếu bạn cần một số logic đặc biệt, mã hóa mọi thứ của bạn chắc chắn nhanh hơn việc tạo ra 40 bối cảnh hoặc quy tắc ...

13
gagarine

Cách đơn giản nhất là tạo các mục menu đó trong các trang "nội bộ" của bạn (trang phụ thuộc về khu vực/trang đích của bạn) con của các mục menu trang đích.

Cái gì đó như:

[.___.] Menu liên kết chính [.__.] | [.__.] + - mục đích của trang đích 1 [.__.] | | [.__.] | + - trang nội bộ 1 mục menu [.__.] | + - mục menu 2 trang bên trong [.__.] | [.__.] + - mục đích của trang đích 2 [.__.] | [.__.] + - mục nội bộ 3 mục menu [.___. ] + - mục nội bộ 4 trang menu [.__.]

Nếu bạn phải giữ chúng trong các menu riêng biệt, có lẽ bạn sẽ cần phải chơi với theme_links () để giữ các lớp "active-trail" và/hoặc "active" thích hợp.

3
Maciej Zgadzaj

Có lẽ mô-đun Menu Men sẽ giúp bạn.

(Kết hợp với cách tiếp cận mà Maciej nêu ra ở trên).

Từ trang dự án Menu Block:

Nó cung cấp các khối cấu hình của các cây menu bắt đầu với bất kỳ cấp độ nào của bất kỳ menu nào. Và hơn thế nữa!

Vì vậy, nếu bạn chỉ sử dụng tính năng liên kết menu Chính của chủ đề, bạn có thể thêm và định cấu hình một khối Chính Menu (cấp 2+). Khối đó sẽ xuất hiện khi bạn ở trên một trong các trang Menu chính và sẽ hiển thị cây menu cho cấp 2 (và sâu hơn) của menu Chính của bạn và sẽ mở rộng khi bạn đi ngang qua cây. Bạn cũng có thể giới hạn độ sâu của menu Cây cây (ví dụ: Menu chính (cấp 2-3)) và/hoặc mở rộng tất cả các menu con con (ví dụ: Menu chính (cấp độ mở rộng 2+)).

1
iainp999

Bạn cũng có thể sử dụng hook_translated_menu_link_alter(). Điều này sẽ có chút khó khăn.

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