如何在 Drupal 7 下获取 pathauto 以通过完整菜单路径生成 URL 别名?
10 回答
只是一个更新,以防有人使用更新版本的 Pathauto/Token 遇到此问题。这对我有用:
[节点:菜单链接:父母:加入路径]/[节点:菜单链接]
我最终使用:
[node:menu-link:parent:url:path]/[node:menu-link]
但是非常小心:如果节点没有菜单链接,您最终将没有自动别名页面。从好的方面来说,这可能会让您意识到孤立页面。(将其视为一个功能!)
请注意,使用模式:
[node:menu-link:url:path]/[node:menu-link]
只会给出节点的菜单链接,而不是父节点的链接(需要引用父节点的路径)。
或模式:
[node:parent:url:path]/[node:menu-link]
在我的 Drupal 7 实例中引发关于无效令牌的错误(即使我安装了令牌模块)。
[node:menu-link:parent:url:path]/[node:title]
如果节点不在菜单中,则不会创建别名。否则,这似乎适用于 n 层菜单。
我认为现在必须是这种模式:
[node:menu-link:url:path]/[node:menu-link]
“路径”而不是“别名”
您还需要安装 contrib Token 模块——尽管 Token 的许多功能是 D7 中核心的一部分,但没有提供一些边缘案例令牌(如给定节点的完整菜单路径)自动按核心。
安装后,我相信 [node:menu-link:parent] 或 [node:menu-link:parent:url] 应该可以工作。
适合我的模式如下:
[node:menu-link:parent:url:alias]/[node:menu-link]
我还按照 Eaten 的建议安装了 Token 模块。不知道[node:menu-link:parent:url:alias]
是核心的一部分还是生活在贡献中。
如果您尝试为 3 级或更深的页面创建别名,例如:
Home page
> Level 1 page
> Level 2 page
> Level 3 page
并且您希望 3 级页面的别名看起来像http://domain.com/level-1/level-2/level-3
,我通过将模式设置为:
[node:menu-link:parent:parent:parent:title]/[node:menu-link:parent:parent:title]/[node:menu-link:parent:title]/[node:title]
请注意,我添加:parent
了令牌,对于第一个令牌,我添加了两次。
享受!
[节点:菜单链接:父母:加入路径]/[节点:标题].html
这是我使用的解决方案:
[node:menu-link:parents:join:/]/[node:menu-link]
它将用破折号分隔父菜单项。这就是我需要的。
对于偶然发现此答案并想知道如何添加此答案的任何人:
配置 > 搜索和元数据 > URL 别名,然后在“模式”选项卡下创建。