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 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.
$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.