如何从Joomla获得特定的菜单项?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (35)

这个问题是针对Joomla的。

我有一个主菜单组成:

首页|关于我们|隐私政策|投资组合|联系我们

每个菜单项都链接到一篇文章。

现在在整个网站上,组件和模块中有很多地方需要显示两个链接:隐私政策和投资组合。

有人能指导我吗?

提问于
用户回答回答于

有两种方法可以做到这一点:

选项1:

每次页面加载时,Joomla加载菜单。你可以通过调用以下方法访问菜单。

// Get default menu - JMenu object, look at JMenu api docs
$menu = JFactory::getApplication()->getMenu();

// Get menu items - array with menu items
$items = $menu->getMenu();

// Look through the menu structure, once you understand it
// do a loop and find the link that you need.
var_dump($items);

此方法更快,因为你不需要查询数据库。内存中的简单操作。

选项2:

从数据库中获取它。jos_menu根据别名或某物获取菜单链接,或者jos_content通过文章别名获取文章#,然后创建链接

$db = JFactory::getDBO();

//  Load by menu alias
$query = "SELECT link FROM #__menu WHERE alias = 'privacy-policy'";
$db->setQuery($query);
$url = $db->loadResult();
$url = JRoute::_($url);


//  Load by article alias
$query = "SELECT id FROM #__content WHERE alias = 'privacy-policy'";
$db->setQuery($query);
$articleId = (int) $db->loadResult();
$url = JRoute::_("index.php?option=com_content&view=article&id=$articleId");
用户回答回答于

在2.5+中实现这一点的最简单方法是:

$app = JFactory::getApplication();
$menu = $app->getMenu();
$menu_items = $menu->getItems('menutype', 'mainmenu');

只需将“主菜单”替换为 你想要拉的菜单类型即可。这将等同于你的菜单的系统名称,与你在菜单模块中选择的相同。

以与上面相同的方式获取菜单对象,然后:

// To get menu items filtered by access level of current user.
$filtered_menu_items = $menu->getItems(null, null);

// To get all menu items, unfiltered.
$all_menu_items = $menu->getMenu();

所属标签

可能回答问题的人

  • 人生的旅途

    10 粉丝484 提问6 回答
  • 不吃貓的鱼oo

    5 粉丝466 提问6 回答
  • 富有想象力的人

    4 粉丝0 提问5 回答
  • Richel

    8 粉丝0 提问5 回答

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励