朋友新手问题.........我需要帮助才能获取特定菜单项ID的URL。情况是这样的:
我正在运行Joomla并要求用户输入菜单ID并选择该菜单ID的布局。
我想使用此菜单itemID的URL执行其他操作。
如何获取用户提供的此菜单项ID的URL?
例如,如果用户输入是谎言$this->get ('menulayoutid'>;
并且他输入了54
的ID,那么如何获取菜单ID 54的URL。
请注意:我想从我的PHP文件中获取此URL,而不是在浏览器中,以便我可以将该URL的值用于其他目的。
请帮助。
答案 0 :(得分:12)
$itemid = JRequest::getVar('Itemid');
$application = JFactory::getApplication();
$menu = $application->getMenu();
$item = $menu->getItem($itemid);
$link = new JURI($item->link);
$link->setVar('ItemId', $itemid);
答案 1 :(得分:3)
但是,我们从任何地方获取Itemid(用户输入,来自我们自己开发的模块,使用xml文件中的“菜单项”字段类型,如上所述in the Joomla Docs - Standard form field types)
// 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);
我认为如果我们只需要指向特定菜单ID的链接,这是最好的解决方案,因为我们的请求绝对少且代码清晰
这也适用于Joomla 3.0,3.1
答案 2 :(得分:2)
我只想补充一点,如果您需要定位特定菜单,则将菜单名称作为参数传递给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);
答案 3 :(得分:1)
我不确定Joomla是否改变了自2.5或甚至1.7以来的工作方式,但我花了2个小时的时间来寻找这个。[/ p>
希望它有助于某人。
$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>";
答案 4 :(得分:1)
如果您需要在Joomla中获取活动菜单项ID以仅显示该菜单项的某些特定内容或仅显示菜单项的ID,请在您希望显示活动菜单项ID的位置插入以下代码:
<?php
$currentMenuId = JSite::getMenu()->getActive()->id;
echo $currentMenuId;
?>