Друзья вопрос новичков ……… Мне нужна помощь в получении URL-адреса определенного элемента ItemID. Ситуация такова:
Я запускаю Joomla и прошу пользователя ввести идентификатор меню и выбрать макет для этого идентификатора меню.
Я хочу сделать что-то еще с этим URL-адресом элемента ItemID.
Как я могу получить URL-адрес этого элемента ItemID, предоставленного пользователем?
Например, если пользовательский ввод является liek $this->get ('menulayoutid'>;
и он вводит и ID 54
то как мне получить URL для ID меню 54.
Обратите внимание: я хочу получить этот URL из моего PHP-файла, а не в браузере, чтобы я мог использовать значение этого URL-адреса для какой-либо другой цели.
Незлая помощь.
$itemid = JRequest::getVar('Itemid'); $application = JFactory::getApplication(); $menu = $application->getMenu(); $item = $menu->getItem($itemid); $link = new JURI($item->link); $link->setVar('ItemId', $itemid);
Однако мы получаем Itemid из любого места (пользовательский ввод, из нашего собственного разработанного модуля, используя тип поля «пункт меню» в XML-файле, как описано в типах полей формы Joomla Docs – Standard )
// get the menuItemId from wherever... // as described above or as in other posts here and do whatever with that! $menuItemId = 'fromWherever'; // as an example "107"; // build the link to the menuItemId is just easy and simple $url = JRoute::_('index.php?Itemid=' . $menuItemId);
я думаю, если нам нужна только ссылка на конкретный идентификатор меню, это лучшее решение, потому что у нас абсолютно нет запросов и чистого кода
это работает и в Joomla 3.0, 3.1
Я просто хочу добавить, что если вам нужно настроить таргетинг на конкретное меню, вы передаете имя меню в качестве аргумента getMenu ().
$itemid = JRequest::getVar('Itemid'); $application = JFactory::getApplication(); $menu = $application->getMenu( 'menu-name' ); $item = $menu->getItem($itemid); $link = new JURI($item->link); $link->setVar('ItemId', $itemid);
Я не уверен, что Joomla изменила способ работы с 2,5 или даже 1,7, но я потратил худшую половину из 2 часов на это.
Надеюсь, это помогает кому-то.
$menuID = $params->get('menuItem'); // from module field menu ex. '105' $js = new JSite; $menu = $js->getMenu(); $link = $menu->getItem($menuID)->route; //Returns URL Friendly Link -> menu/article //Then format it -> $link = 'http://www.yoursite.com/index.php/'.$link; echo '<a href="'.$link.'">Borrowed Menu Link Path</a>";
Когда вам нужно получить свой активный идентификатор элемента меню в Joomla, чтобы отобразить определенный контент только для этого пункта меню или просто для отображения идентификатора элемента меню, вставьте следующий код, в котором вы хотите отобразить активный элемент меню:
<?php $currentMenuId = JSite::getMenu()->getActive()->id; echo $currentMenuId; ?>