【问题标题】:Drupal 6: Parent menu item redirection to first submenu itemDrupal 6:父菜单项重定向到第一个子菜单项
【发布时间】:2011-06-22 20:13:03
【问题描述】:

我有一个 Drupal 6.22 站点,主要链接如下(使用 Nice Menus):

Section 1
- Foo
- Bar
Section 2
- Page A
(...)

我的客户问这个问题:如果用户点击“Section 1”,就会显示“Foo”页面。换句话说,当单击任何“部分”时,用户将被重定向到该部分的第一个子项。

一开始,我将菜单项“Section 1”的路径修改为“section1/foo”,但是Foo页面中的面包屑(我使用的是Menu Breadcrumbs)显示:

Home > Section 1

我希望面包屑显示这个:

Home > Section 1 > Foo

所以这不起作用,所以我安装了重定向模块,定义了“section1 -> section1/foo”重定向,但我无法创建指向“section1”的菜单项(它不是别名) .

有什么想法吗?提前致谢。

【问题讨论】:

    标签: drupal drupal-6


    【解决方案1】:

    您需要直接编辑菜单数组。从您正在使用的当前主题打开 template.php 并将其添加到函数 themename_preprocess_page(&$vars) 中:

    print_r($vars['primary_links']);exit();

    然后刷新站点上的任何页面,您将看到 primary_links 数组的打印输出。它看起来像这样:

    Array ( [menu-640 active-trail] => Array ( [attributes] => Array ( [title] => A Page Title ) [href] => node/20 [title] => A Page Link Title ) )

    您可以通过将 [href] 设置为您的首选值来更改它。你需要通过 foreach($vars['primary_links']) 循环来获得孩子并适当地改变他们的父母,但这应该不会太难。

    【讨论】:

    • 它不起作用,因为我正在为主要链接使用一个很好的菜单块。
    • 您应该仍然可以更改 Nice Menus 在您的 template.php 文件中使用的主题功能来执行此操作。在 Nice Menus 模块文件夹中查找以 .tpl.php 结尾的文件,以便在您的 template.php 中复制代码,和/或在 nice_menus.module 中查找将指向您的 hook_theme() 的实现正在构建菜单项的功能。如果您可以从您自己的自定义模块或 template.php 中更改它们,您就可以很好地使用 Nice Menus (!) 并获得您想要的。
    • 好点,现在我正在使用 Nice Menus 的主题功能。我会接受你的回答。
    【解决方案2】:

    这是 Drupal 的一大痛点。我的解决方案是专门为重定向页面创建一个节点。 (我实际上创建了一个名为 Redirect 的内容类型,因此我可以让 pathauto 以不同的方式处理它们......自动创建别名,如 /redirect/page-name)创建该节点后,您可以设置从该页面到真实页面。

    我还设置了 robots.txt 以禁止重定向/*,这样 Google 就不会在碰巧找到重定向页面时尝试将它们编入索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-15
      • 2015-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多