Nhận liên kết đầy đủ từ loại trường mục menu


7

Tôi đang phát triển thành phần và mô-đun trình chiếu của riêng mình cho Joomla. Thành phần được sử dụng để chọn các trang chiếu cùng với chú thích và liên kết, vv Mô-đun hiển thị các trang chiếu.

Trong thành phần, đối với mỗi slide tôi đã kích hoạt tùy chọn để thêm một liên kết đến mỗi slide. Loại trường mà tôi đã sử dụng là loại trường mục menu http: //docs.j Joomla.org/Menuitem_form_field_type

Điều này dường như để thêm id mục menu vào cơ sở dữ liệu cho slide cụ thể đó.

Câu hỏi của tôi là; Làm thế nào để tôi lấy id mục menu này và sau đó trong mô-đun sử dụng nó để có được liên kết mục menu đầy đủ? Tôi sẽ hiểu rằng tôi có thể sẽ phải tìm kiếm thông qua cơ sở dữ liệu để tìm đúng mục menu và sau đó tìm liên kết thích hợp nhưng tôi không chắc chắn nên bắt đầu từ đâu.

Nếu bất cứ ai có thể chỉ cho tôi đi đúng hướng tôi sẽ đánh giá cao nó.

Cảm ơn :)

Câu trả lời:


5

Để lấy ID mà tôi giả sử bạn đã biết, bạn có thể sử dụng như sau:

$itemid = $params->get('field_name');

Để lấy URL dựa trên ID, hãy thử điều này:

$itemid = $params->get('field_name'); //change the field name to whatever you have 

$app = JFactory::getApplication();
$menu = $app->getMenu();
$link = $menu->getItem($itemid)->link;

echo JRoute::_($link);

Điều này sẽ lặp lại một URL SEF. Nếu bạn muốn có một URL tiêu chuẩn thì chỉ cần sử dụngecho $link;

Hi vọng điêu nay co ich


Wow, thật đơn giản! Tôi nghĩ rằng tôi sẽ phải truy vấn cơ sở dữ liệu. Tôi sẽ thử điều này hôm nay và cho bạn biết kết quả. Cảm ơn rất nhiều :)
DesignSubway

Tôi có một nhu cầu tương tự. Khi tôi truy xuất mục menu với $ menu-> getItem ($ itemid), nó cung cấp cho tôi đối tượng mong đợi - nhưng thuộc tính -> liên kết trống. Tôi có thể định tuyến bằng cách sử dụng bí danh trực tiếp, nhưng tôi không chắc đó có phải là hình thức tốt hay không.
LCD

@lcdservice - Phiên bản nào của Joomla?
Lodder

Nevermind - Tôi tìm thấy vấn đề. chúng tôi có một số mục menu thuộc loại "phân cách văn bản", do đó không có giá trị liên kết. Tôi đã phải điều kiện mã của mình để xử lý khả năng một mục menu loại này được chọn không chính xác.
LCD

@RustyJoomla - Vui mừng nó giúp :)
Lodder

1

Nó có thể được thực hiện nhanh hơn một chút với ít mã hóa hơn:

JRoute::_('index.php?Itemid='.$itemid);

Điều này sẽ trả về một url tương đối cho mục menu đã chọn.

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.