当节点也有 Drupal 的顶级 link 时,保持二级菜单可见?

Keep secondary level menu visible when node also has a top level link with Drupal?

我有以下菜单结构。 Node1 和 Node2 是顶级 links。 NodeA 和 NodeB 是 Node2 的子节点。

-Node1
-Node2
--NodeA
--NodeB

当您在 Node2、NodeA 或 NodeB 上时,通过菜单块模块显示二级菜单。此二级菜单包含 NodeA 和 NodeB。

到目前为止一切正常。但是,我还需要向 NodeB 添加一个顶级 link。

-Node1
-Node2
-NodeB
--NodeA
--NodeB

如果我这样做,那么一旦我进入 NodeB 的页面,我就会失去二级菜单。我尝试使用菜单和菜单块的设置,并将 links 设置为展开,但它并没有改变任何东西。

即使节点也有顶级 link,我如何保持二级菜单可见?

我认为问题在于作为顶层的 NodeB link 也与子菜单中的 NodeB 具有相同的别名。

在 NodeB 顶层 link 尝试将 URL 设置为绝对值 URL。

  • NodeB(顶级): http://yourdomain/alias
  • NodeB(子级别): node/1234(或者你现在拥有的任何东西)

如果您这样做,Drupal 菜单系统将不会因为有两个 "equal" 菜单项而混淆。

编辑

您也可以尝试使用令牌模块(我找到了一个特定于您需要的模块:https://www.drupal.org/project/menu_token). It appears to have issues with using the site-url token. It appears to have a workaround 您可以尝试使用。

但这并不能解决更新别名的问题。这比较困难,因为您需要使用 hook_node_update 来更新您需要的菜单 link。

也许可以结合使用名为 whatever 的替代别名和使用 301 重定向到 node/1234 的组合。

编辑 2

我想起来了,也许您还可以使用规则模块来更新别名。