【问题标题】:How to find which menu a node belongs to in drupal如何在drupal中查找节点属于哪个菜单
【发布时间】:2010-02-06 00:27:54
【问题描述】:

我目前在我的站点上设置了节点,每个节点都属于一个特定的菜单(不是主要或次要的预建菜单)。

如何找出节点属于哪个菜单?

【问题讨论】:

    标签: drupal menu drupal-6


    【解决方案1】:

    也许这就是你的意思:

    $trail        = menu_get_active_trail();
    $lastInTrail  = end($trail);
    $menu_name    = $lastInTrail['menu_name'];
    

    menu_get_active_trail() 返回一个类似面包屑的数组,最后一个面包屑代表当前节点。

    干杯, 劳伦斯·默尔斯,鹿特丹

    【讨论】:

      【解决方案2】:

      我是菜鸟,所以如果我要写的是毫无价值的胡言乱语,请不要抨击我。

      我认为您不能直接执行此操作,除非有一些智能模块可以执行检查此操作所需的所有讨厌的 SQL 查询。

      节点信息存储在 SQL 表“node”中,仅通过 NID(节点 ID,即地址中 /?q=node/ 后面出现的节点号)来标识。它们的别名(如果有)存储在“url_alias”表中,您可以在其中找到列“src”和“dst”,标识原始路径和别名路径(例如,src='node/123', dst='my /url/别名')。菜单链接可以在“menu_links”表中找到,您可以在其中找到“menu_name”(菜单的机器名称)和“link_path”(节点/...或别名)列。

      所以,你需要做的是:

      1. 获取当前节点的NID
      2. 如果节点/NID 有别名,则查询“url_alias”并检索它,否则离开节点/NID
      3. 在“menu_links”表中查询您已确定的路径并检索“none”或菜单的机器可读名称

      然后您还可以查询表“menu_custom”以检查您确定的菜单的可读名称是什么。

      无论如何,这是一个复杂的查询(几个查询?)而且我对 MySQL 一无所知,所以我无法为您提供用于检查所有内容的实际代码:P。

      【讨论】:

      • 更简单的方法是查看 $node->path 并查询 menu_links 表。所以一个单一的查询,希望有一个更智能/更简单的内置方式,我无法相信 $node 对象不包含它所属的菜单的信息! ://
      • 哦,是的,你是对的。我今天一直在进行手动数据库调整(Worpress 导入弄乱了一些信息)并且只想着它:D。表“节点”包含信息行 NID、VID、内容类型(页面、故事...)、创建和上次修改的时间戳、创建者的 UID 等等。可悲的是,与菜单无关。它在 Drupal 中以相反的方式工作:它是引导用户到节点的菜单,而不是相反的方式...... :(
      【解决方案3】:

      这不是一个直接的解决方案,我从您对先前答案的回复中看到,您并不想要最简单的解决方案,但我想我会提到这个选项。 Menu Node API module 维护着一个 Drupal 缺少的表,一个节点-菜单关系表。

      该模块本身不做任何事情,但似乎有一些贡献的模块建立在此之上,因此取决于您的问题有多复杂,它可能是一个起点。

      【讨论】:

      • 有一种直接的方法,它由同一页面上的 lmeurs 提供。
      【解决方案4】:

      http://drupal.org/node/584984

      更新:对不起,伙计们,我什至没有意识到我已经发布了这个链接。我想我打算将其作为草稿并在关闭标签时简单地发布。也就是说,mingos(上图)是正确的。 我的链接是一个函数 menu_get_active_menu_name(),它似乎为您提供了一个包含当前页面的活动菜单的数组。我认为这就是您使用它的目的,这将是一种将自己从可能导致问题的数据库调用中抽象出来的好方法。 我自己从未尝试过,这可能是我没有详细说明和发布的原因。嗯……至少不是故意发帖的。

      【讨论】:

      • 我假设您指的是引用页面上的示例,但它指的是“获取当前页面的活动菜单 - 确定活动路径。”的功能,您也应该尝试扩展您的帖子以解释您为什么链接到某些内容。
      • 哎哟......甚至不记得链接到这个。必须以草稿的形式完成并提交。我会编辑帖子。
      猜你喜欢
      • 2013-10-25
      • 1970-01-01
      • 2017-04-09
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多