如何在 Drupal 7 下获取 pathauto 以通过完整菜单路径生成 URL 别名?
只是一个更新,以防有人在更新版本的 Pathauto/Token 中遇到此问题。这对我有用:
[node:menu-link:parents:join-path]/[node:menu-link]
我最终使用了:
[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]
是核心的一部分还是存在于 contrib 中。
如果您尝试为第三级或更深的页面创建别名,例如:
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 别名,然后在“模式”选项卡下创建。