繁体   English   中英

Joomla:如何获取特定菜单itemID的网址?

[英]Joomla : how to get the url of a specific Menu itemID?

朋友一个新手问题.........我需要帮助来获取特定菜单itemID的URL。 情况是这样的:

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

我想使用菜单itemID的此URL做其他事情。

如何获得用户提供的此菜单itemID的URL?

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

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

请帮助。

$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

但是,我们可以从任何地方获取Itemid(用户输入,使用Joomla Docs-标准表单字段类型中所述的xml文件中的“菜单项”字段类型,从我们自己开发的模块中获取)

// 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中也可以使用

我只想补充一点,如果您需要定位特定菜单,则可以将菜单名称作为参数传递给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中获取活动菜单项ID以便仅显示该菜单项的某些特定内容或仅显示菜单项的ID时,在希望显示活动菜单项ID的位置插入以下代码:

<?php 
$currentMenuId = JSite::getMenu()->getActive()->id;
echo $currentMenuId; 
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM