it-swarm-vi.com

Tạo loại trình đơn mới, xác định các trường, siêu dữ liệu

Tôi muốn tạo bố cục com_tags/tags tùy chỉnh, tuy nhiên tôi cần giữ trường Parent_id cho mục menu.

Những gì tôi đã làm là tạo ra:

/templates/mytemplate/html/com_tags/tags/species.php
/templates/mytemplate/html/com_tags/tags/species.xml (copied from administrator/components/tags/config.xml)

Điều này cho thấy một mục "Loài" trong cửa sổ bật lên loại menu, tuy nhiên không có trường tùy chỉnh nào ở đó nữa. Tôi cần trường Parent_id, nằm trong mục "Danh sách tất cả các thẻ".

Tôi đã gỡ lỗi mã và rõ ràng tôi cần

/templates/mytemplate/html/com_tags/metadata.xml

có vẻ như cần phải chứa một số loại mục "menu". Tôi không thể tìm thấy bất kỳ ví dụ về cách định dạng này.

Đây là một tệp ví dụ từ bản sao lưu Akeeba https://github.com/akeeba/contactus/blob/master/component/frontend/view/item/metadata.xml nhưng tôi không thể tìm ra cách thêm lựa chọn ở đây?

1
jdog

Nếu tôi hiểu câu hỏi của bạn, bạn đang cố gắng tạo loại menu tùy chỉnh cho thành phần com_tags và cần đặt id cho mục menu khi bạn tạo nó trong trình quản lý menu.

Nếu đó là trường hợp bạn không nên sao chép tệp config.xml

Bạn nên sao chép

joomlaRoot/components/com_tags/views/tags/default.xml 

trong đó có các trường cho id cha, cũng như các tham số được định nghĩa trong nó.

Chỉ cần đảm bảo thay đổi tên thành loài.xml và thay đổi văn bản tiêu đề/tùy chọn để Joomla biết đây là một bố cục khác.

Tôi hi vọng cái này giúp được.

1
Mathew Lenning

Nếu tôi hiểu chính xác thì có một lựa chọn khác, và đó là "bỏ qua" cách thông thường khó đạt được nếu không có một số ghi đè và sử dụng thực tế là ghi đè của bạn là một tệp php để lấy thông tin riêng.

Cách nhận Itemid bằng URL và chuyển nó đến JRoute

Câu trả lời của tôi ở đây hiển thị như sau để tạo liên kết đến một trang cụ thể bằng cách lấy ID mục menu.

$app = JFactory::getApplication(); 
$menu = $app->getMenu();
$menuItem = $menu->getItems( 'link', 'index.php?option=com_example&view=something', true );
echo JRoute::_('index.php?Itemid='.$menuItem->id);

Bây giờ trong trường hợp này $menuItem Thực sự là một đối tượng chứa thông tin về mục menu đó.

vì thế.....

$app = JFactory::getApplication(); 
$menu = $app->getMenu();
$menuItem = $menu->getItems( 'link', 'index.php?option=com_example&view=something', true );
echo JRoute::_('index.php?Itemid='.$menuItem->parent_id);

Sẽ giúp bạn có một liên kết đến các mục menu cha.

Nhưng bạn có thể chỉ cần mục menu hiện tại, vì vậy bằng cách điều chỉnh dòng này:

$menuItem = $menu->getItems( 'link', 'index.php?option=com_example&view=something', true );

đến:

$menuItem = $menu->getActive();

Bạn chỉ có thể nhận được liên kết của cha mẹ của trang hiện tại. Thử nghiệm có thể có thể tiến xa hơn cũng như $menu->getItems() có rất nhiều tùy chọn bạn có thể sử dụng (mặc dù tôi không thể tìm thấy một trang tài liệu tốt về nó).

1
Jordan Ramstad