题
我有一个自定义结构,用于浏览内容 hook_menu
和观点。我希望链接到内容以节点类型路由到我的结构中的适当目的地。因此,当通常单击节点链接时 node/123
, ,相反,我想被送到 foo/123
(因为节点123是“ foo”类型)。
我尝试了Pathauto,但仅仅制作 foo/123
一个别名 node/123
. 。特定的结构,选项卡等...已使用 hook_menu
为了 foo/123
. 。 Pathauto(我理解)实际上只是在显示 node/123
这只是库存的Drupal节点显示,而不是我想显示的内容。
我开始在一起 hook_nodeapi
和 drupal_goto
基于节点类型重定向。 [解决一些无限的重定向问题,但我敢肯定我可以弄清楚。]但是我真的想这样做吗?不会有速度打击以使网站上的每个链接通过HTTP重定向吗?
最好的方法是什么?
编辑
实际上,我认为问题是Pathauto不尊重我的hook_menu,也不是正确的工具。尚未设置Pathauto,我有一个hook_menu,该hook_menu定义了一个页面 foo/123
其中foo是节点类型。导航到 foo/###
按预期显示我的自定义版本的节点###。
现在我想重定向 node/###
到 foo/###
, ,或者换句话说,我想要所有链接 node/###
写为 foo/###
. 。对于Pathauto来说,这似乎是一项明显的任务 foo/[nid]
. 。除了设置之后,我的hook_node不再功能。那是因为现在 foo/###
被路由到 node/###
就像我问的那样,显示的是香草drupal节点显示器,而不是我的hook_menu。
解决方案
实际上,可以设置Pathauto来指定您的自定义路径。它使用令牌模块可以轻松地重新配置Pathauto应该如何构建别名...
在Pathauto的管理页面(admin/build/path/pathauto)中检查。
编辑
为了您的编辑,我要做的就是实现hook_menu_alter,我会将节点/%页面回调修改为hook_menu中使用的回调以渲染foo/123页。