How do I get pathauto under Drupal 7 to generate a URL alias by the full menu path?
Just an update in case anyone comes across this with a more recent version of Pathauto/Token. This worked for me:
[node:menu-link:parents:join-path]/[node:menu-link]
I ended up using:
[node:menu-link:parent:url:path]/[node:menu-link]
Heavy caution though: If the node does not have a menu link, you'll end up without an automatically aliased page. On the bright side, this might make you aware of orphan pages. (Consider it a feature!)
Note that using the pattern:
[node:menu-link:url:path]/[node:menu-link]
will only give the node's menu link, not that of the parent (which would be needed to reference the parent's path).
Or the pattern:
[node:parent:url:path]/[node:menu-link]
throws an error in my instance of Drupal 7 about invalid tokens (even though I have the token module installed).
[node:parent:url:path]
should definitely throw an error as your node doesn't have a parent (unless you have a custom node field called parent). Your node, optionally, does have a menu link parent when it's put in a menu, that's why your first pattern works, and your last doesn't. Cheers. –
Ursine [node:menu-link:parent:url:path]/[node:title]
If the node is not in the menu, then it does not create an alias. Otherwise this seems to work for n-tier menus.
I think it has to be this pattern now:
[node:menu-link:url:path]/[node:menu-link]
"path" instead of "alias"
[node:menu-link:parent]/[node:title]
Which works as expected. –
Icelander You'll need to install the contrib Token module as well -- although a lot of the features of Token are part of core in D7, some of the edge case tokens (like the full menu path of a given node) aren't provided by core automatically.
With that installed, I believe that [node:menu-link:parent] or [node:menu-link:parent:url] should work.
The pattern that works for me is the following:
[node:menu-link:parent:url:alias]/[node:menu-link]
I also intalled the Token module like Eaten suggested. Don't know if [node:menu-link:parent:url:alias]
is part of core or lives in contrib.
If you're attempting to make aliases for pages that are 3rd level or deeper, for example:
Home page
> Level 1 page
> Level 2 page
> Level 3 page
and you want the alias for Level 3 page to look like http://domain.com/level-1/level-2/level-3
, I got it to work for me by setting my pattern to:
[node:menu-link:parent:parent:parent:title]/[node:menu-link:parent:parent:title]/[node:menu-link:parent:title]/[node:title]
Notice that I added :parent
to the token, and for the first one I added it twice.
Enjoy!
[node:menu-link:parents:join-path]/[node:title].html
This is the solution I use:
[node:menu-link:parents:join:/]/[node:menu-link]
It will separate parent menu items with a dash. That is what I need.
For anyone who stumbles upon this answer, and wonders how to add this:
Configuration > Search and Metadata > URL aliases, then create under "Patterns" tab.
© 2022 - 2024 — McMap. All rights reserved.