Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何根据名称获取joomla菜单对象?_Php_Joomla - Fatal编程技术网

Php 如何根据名称获取joomla菜单对象?

Php 如何根据名称获取joomla菜单对象?,php,joomla,Php,Joomla,这个问题对乔姆拉来说有点特殊 我知道使用代码$menu=&JSite::getMenu()是否可以获得完整菜单的引用对象。但是如何根据名称获得指定菜单 我的设想: 我有一个页脚菜单,上面有:主页|关于我们|规则|隐私政策 我需要在一个组件中显示指向两个菜单项规则和隐私策略的链接。我不能硬编码链接,因为itemid在开发和生产环境中是不同的 我们是否有一些变通方法,比如$menu=&JSite::getMenu()->get('footer-menu')->getMenuItem('rules')

这个问题对乔姆拉来说有点特殊

我知道使用代码
$menu=&JSite::getMenu()
是否可以获得完整菜单的引用对象。但是如何根据名称获得指定菜单

我的设想: 我有一个页脚菜单,上面有:主页|关于我们|规则|隐私政策

我需要在一个组件中显示指向两个菜单项规则和隐私策略的链接。我不能硬编码链接,因为itemid在开发和生产环境中是不同的

我们是否有一些变通方法,比如
$menu=&JSite::getMenu()->get('footer-menu')->getMenuItem('rules')
可以为我提供指向特定菜单项的引用对象,我可以从中创建该特定文章的链接

谢谢,
Tanmay

据我所知,没有一种内置的方法可以做到这一点。但我感觉到了你的痛苦

这是我之前构建的一个函数的改编。它不是递归的,所以在菜单层次结构中只有一个层次,但这对我来说已经足够了

function getMenuItems( $parentAlias ) {
    $db =& JFactory::getDBO();
    $sql = 'SELECT * FROM #__menu WHERE parent in ' .
           '(SELECT id FROM #__menu WHERE alias='.$db->Quote($parentAlias).') '.
           'AND published=1 ORDER BY ordering';
    $db->setQuery($sql);
    $results = $db->loadObjectList();
}

让我知道这是否适合您。

据我所知,没有一种内置的方法可以做到这一点。但我感觉到了你的痛苦

这是我之前构建的一个函数的改编。它不是递归的,所以在菜单层次结构中只有一个层次,但这对我来说已经足够了

function getMenuItems( $parentAlias ) {
    $db =& JFactory::getDBO();
    $sql = 'SELECT * FROM #__menu WHERE parent in ' .
           '(SELECT id FROM #__menu WHERE alias='.$db->Quote($parentAlias).') '.
           'AND published=1 ORDER BY ordering';
    $db->setQuery($sql);
    $results = $db->loadObjectList();
}
让我知道这是否对您有效。

方法1:

$menu = & JSite::getMenu();
$item = $menu->getItems('link', 'index.php?option=com_content&view=article&id=1', true);
$menu = & JSite::getMenu();
$item = $menu->getItems('alias', 'rules', true);
方法#2:

$menu = & JSite::getMenu();
$item = $menu->getItems('link', 'index.php?option=com_content&view=article&id=1', true);
$menu = & JSite::getMenu();
$item = $menu->getItems('alias', 'rules', true);
方法#1:

$menu = & JSite::getMenu();
$item = $menu->getItems('link', 'index.php?option=com_content&view=article&id=1', true);
$menu = & JSite::getMenu();
$item = $menu->getItems('alias', 'rules', true);
方法#2:

$menu = & JSite::getMenu();
$item = $menu->getItems('link', 'index.php?option=com_content&view=article&id=1', true);
$menu = & JSite::getMenu();
$item = $menu->getItems('alias', 'rules', true);

好像是星期五发烧!!!:(似乎没有人在线……请帮帮我……至少在周一:)似乎是周五热!!!:(似乎没有人在线……请帮助我……至少在周一:)Garrett Bluma,最后我做了一些类似于您的实现的事情,在模型中创建了一个函数,为我想要的菜单项获取对象。谢谢你的回复。至少它证实了我没有错过joomla的一个伟大功能:)Garrett Bluma,最后我做了一些类似于您的实现的事情,在模型中创建了一个函数,为我想要的菜单项获取对象。谢谢你的回复。至少它证实了我没有错过joomla的一个重要功能:)