Joomla:如何获取特定Menu itemID的url?

时间:2010-12-25 07:02:59

标签: php url menu joomla

朋友新手问题.........我需要帮助才能获取特定菜单项ID的URL。情况是这样的:

我正在运行Joomla并要求用户输入菜单ID并选择该菜单ID的布局。

我想使用此菜单itemID的URL执行其他操作。

如何获取用户提供的此菜单项ID的URL?

例如,如果用户输入是谎言$this->get ('menulayoutid'>;并且他输入了54的ID,那么如何获取菜单ID 54的URL。

请注意:我想从我的PHP文件中获取此URL,而不是在浏览器中,以便我可以将该URL的值用于其他目的。

请帮助。

5 个答案:

答案 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);

来源:http://forum.joomla.org/viewtopic.php?p=1836005

答案 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; 
?>