Câu trả lời:
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 );
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;
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 tree
là 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.
$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.