it-swarm-vi.com

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

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?

7
web-tiki

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 );
10
me7hos

Phương thức getActive trả về một đối tượng với 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
csbenjamin

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 Ý :tree là một mảng và bắt đầu bằng 0, đó là lý do tại sao tôi bị trừ đi 2.

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

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

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

1
jackJoe