Menu tùy chỉnh nhận tiêu đề của mục cha mẹ của menu đang hoạt động


7

Tôi có thể lấy tiêu đề của menu hoạt động bằng cách sử dụng

$menu = &Jsite::getMenu();
$menuname = $menu->getActive()->title;

Nhưng làm thế nào tôi có thể truy cập vào tiêu đề phụ huynh?

Câu trả lời:


10

Hãy thử mã này:

$menu = JFactory::getApplication()->getMenu();
$parent = $menu->getItem( $menu->getActive()->parent_id );
$parentname = $parent->title

Nếu bạn cần liên kết

$parentlink = JRoute::_( $parent->link . '&Itemid=' . $parent->id );

Mặc dù câu trả lời này là chính xác, bạn nên kiểm tra giá trị trả về của getActive () vì có thể không có menu hoạt động và bạn sẽ nhận được một đối tượng không trở lại (tôi nghĩ là null)
Harald Leithner

1

Phương thức getActive trả về một đối tượng có các thuộc tính menu hoạt động bao gồm cả Parent_id. Lớp JMothy có một phương thức getItem ($ id), trong đó $ id là một id menu. Phương thức này trả về cùng loại đối tượng getActive. Vì vậy, bạn có thể làm một cái gì đó như thế này:

$menu = JFactory::getApplication()->getMenu();
$parent_id = $menu->getActive()->parent_id;
$parent_title = $menu->getItem($parent_id)->title;

1

Vì bạn có thể nhận được menu hoạt động, bạn có thể nhận phần còn lại bằng cách lấy tree. Điều này là hữu ích để đi qua danh sách các mục, không chỉ phụ huynh!

Để bạn hiểu rõ hơn, tôi sẽ chia câu trả lời thành nhiều phần:

1. Tạo một biến cho menu hoạt động (để đơn giản và tính di động):

$menu = &JSite::getMenu();
$active = $menu->getActive();

2. Chọn menu trước / cha mẹ bằng cách lấy mục trước trong cây:

$parent_item_id = $active->tree[count($active->tree) - 2];

LƯU Ý: những treelà một mảng, và bắt đầu với không, đó là lý do tại sao tôi đã trừ 2.

3. Cuối cùng nhận được tiêu đề menu:

$menu->getItem($parent_item_id)->title

Lưu ý rằng bạn cũng cần thêm một số kiểm tra để xem liệu có menu hoạt động không và / hoặc kiểm tra lỗi khác.


Bạn không nên sử dụng $menu = &JSite::getMenu();, bởi vì nó không phải là một hàm tĩnh. Cách chính xác là sử dụng mã theo quy định của @ me7hos.
Don Gilbert
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.