使用重复的菜单项控制Drupal的主动/主动跟踪

时间:2010-04-16 19:39:28

标签: drupal menu

我正在开发一个网站,需要在菜单中重复链接:

  

A部分    - 介绍
   - 推荐书

     

B部分    - 介绍
   - 推荐书

     

褒奖
   - A部分    - B节

所以'A部分>推荐和'推荐> A部分指向同一节点。但无论人们使用哪个菜单链接,我都希望此人在A部分。

问题在于D6不喜欢重复的菜单项,并且它无法预测地分配活动和活动跟踪类。

所以我的想法是在Testimonials菜单中为每个项目创建一个占位符节点,然后将URL设置为“testimonials / redirect / section-a”,然后使用mod_rewrite重定向到“section-a” /推荐”。

使用此解决方案,菜单中没有重复的路径。我只是希望这不会以某种方式伤害我的搜索引擎优化。

有谁知道更好的解决方案?

3 个答案:

答案 0 :(得分:3)

我也有这个问题。当多个菜单项链接到相同的内容时,Drupal将使用菜单ID最低的项目作为规范 - 无论您点击哪个菜单链接,您都将获得最低菜单ID的活动路径。

我知道解决它的最好的方法,我不喜欢,是将你的非规范菜单项指向一个节点,该节点将重定向到你想要的节点(你可以使用带有drupal_goto的php输入过滤器) ,或类似的东西)

不幸的是,path_redirect模块无法解决此问题,因为它创建的重定向路径不能用作菜单项。

我不确定为什么在d6中没有更多人使用这个用例 - 在我的经验中,想要将顶级菜单项指向第一个孩子并且想要将活动路径设置为第一个孩子。

nodesymlinks模块解决了反向用例 - 它允许您设置多个菜单项,每个菜单项都有自己的路径,指向同一个节点。因此,根据您在菜单中单击的链接,您将获得不同的活动路径。这个模块对于“规范菜单项”模块来说是一个很好的模型。

答案 1 :(得分:2)

我们在项目中遇到了同样的问题,我们设法让活动路径正确地设置在每个重复的菜单项中,最后设置为“#n”。例如:

Section A
-- Introduction -> node/1#1
-- Testimonials

Section B
-- Introduction -> node/1#2
-- Testimonials

Testimonials
-- Introduction -> node/1#n
-- Section B

不是最漂亮的解决方案,但绝对是最快的解决方案:)我们发现的唯一不便之处是,如果用户先在“A部分 - 简介”中点击,然后在“B部分 - 简介”中点击,那么页面就不会重新加载。

希望这个帮助

答案 2 :(得分:1)

Multiple Node Menu可能会做到这一点:

  

此模块修改"菜单设置"在标准节点编辑表单中   允许管理到节点的多个菜单链接。 Drupal标准   行为只关心阳极的单个菜单链接,所有其他   菜单链接必须通过菜单管理添加。