Путь меню в Pathauto

Как мне получить pathauto в Drupal 7 для создания псевдонима URL по полному пути меню?


person dantz    schedule 13.01.2011    source источник
comment
Также см. drupal.org/node/860082 в очереди задач модуля Token; нам нужно выяснить, какова цель этих токенов, как их нужно назвать и т. д.   -  person Dave Reid    schedule 14.01.2011


Ответы (10)


Просто обновление на случай, если кто-то столкнется с более новой версией Pathauto/Token. Это сработало для меня:

[узел: ссылка-меню: родители: путь-присоединения]/[узел: ссылка-меню]

person Ian Link    schedule 15.06.2012
comment
Отлично работает для меня. Спасибо. На всякий случай, если кому-то интересно, я использую Drupal 7.14, Pathauto 7.x-1.1 и Token 7.x-1.1 (последние версии от 16 июля 2012 г.). Ваше здоровье. - person Mario Awad; 16.07.2012
comment
Если узел не добавлен в меню. Я предпочитаю использовать заголовок узла в качестве последнего сегмента/токена. Это предотвратит отсутствие псевдонима URL-адреса узла, если он будет забыт: [node:menu-link:parents:join-path]/[node:title] - person spatical; 23.02.2014
comment
Также обратите внимание, что путь соединения родителей относится к заголовку родителя, а не к URL-адресу. Таким образом, это может вызвать конфликты, если вы измените заголовок родителя, а затем создадите псевдоним дочернего элемента. - person AlxVallejo; 25.09.2014

В итоге я использовал:

[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 о недопустимых токенах (хотя у меня установлен модуль токенов).

person Community    schedule 14.12.2011
comment
Я думаю, что [node:parent:url:path] определенно должен выдавать ошибку, поскольку у вашего узла нет родителя (если только у вас нет настраиваемого поля узла с именем parent). Ваш узел, необязательно, имеет родителя ссылки на меню, когда он помещается в меню, поэтому ваш первый шаблон работает, а ваш последний - нет. Ваше здоровье. - person Mario Awad; 04.11.2014
comment
@MarioAwad Спасибо за комментарий для будущих зрителей. Я больше не использую Drupal, но ваша теория звучит логично. - person ; 04.11.2014
comment
Да, это был ответ на будущее. Что вы используете вместо Drupal? Будет хорошо учиться. Ваше здоровье. - person Mario Awad; 04.11.2014
comment
С тех пор я перешел на стек Python/C. Ваше здоровье - person ; 04.11.2014

[node:menu-link:parent:url:path]/[node:title]

Если узла нет в меню, то он не создает псевдоним. В противном случае это работает для n-уровневых меню.

person Kenan    schedule 06.03.2012
comment
Это захватывает родительский путь без псевдонимов - person AlxVallejo; 25.09.2014

Я думаю, что это должен быть этот образец сейчас:

[node:menu-link:url:path]/[node:menu-link]

"путь" вместо "псевдоним"

person John Robinson Jr.    schedule 15.09.2011
comment
Я использовал: [node:menu-link:parent]/[node:title] Который работает, как и ожидалось. - person Albert Skibinski; 04.10.2011
comment
Решение Джона Робинсона-младшего плохо работает в D7 — оно создает: /node/1/about и /node/2/contact и т. д.… @askibinski — эта опция почти работает, но не работает, если пункт меню на большей глубине, чем 2: /about/members/member становится /members/member Лучший вариант ниже, опубликованный tristan и Kenan: [node:menu-link:parent:url:path]/[node:title] - - см. drupal.org/node/1354244 - person tmsimont; 08.05.2012

Вам также потребуется установить contrib модуль Token, хотя многие функции Token часть ядра в D7, некоторые маркеры пограничного случая (например, полный путь меню данного узла) не предоставляются ядром автоматически.

С этим установленным, я считаю, что [узел:меню-ссылка:родительский] или [узел:меню-ссылка:родительский:url] должны работать.

person Eaton    schedule 13.01.2011
comment
К сожалению, ни один из этих токенов не делает то, что я хочу. Первый дает мне только родителя, но если элемент меню находится на третьем уровне, первый будет отсутствовать. И последний дает абсолютный путь к родительскому узлу. - person dantz; 14.01.2011
comment
Использование [node:menu-link:parent] или [node:menu-link:parent:url] не является хорошим решением. Мы столкнулись с каскадными проблемами, когда псевдонимы узлов назывались неправильно, потому что родительское меню было названо неправильно. И эти токены не вычисляют полное дерево меню, ведущее к сохраняемому узлу. Вы должны действительно исправить родительский элемент пункта меню, чтобы увидеть какие-либо изменения. - person asiby; 29.03.2012

Шаблон, который работает для меня, следующий:

[node:menu-link:parent:url:alias]/[node:menu-link]

Я также установил модуль Token, как предложил Eaten. Не знаю, является ли [node:menu-link:parent:url:alias] частью ядра или находится в contrib.

person toon.ketels    schedule 20.05.2011

Если вы пытаетесь создать псевдонимы для страниц 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 к токену, причем для первого я добавил его дважды.

person csuggs4    schedule 13.12.2011
comment
Это работает, только если у вас точно глубина 3. См. решения Тристана и Кенана ниже. Они намного лучше и гибче. - person tmsimont; 08.05.2012

Наслаждаться!

[узел:меню-ссылка:родители:путь-присоединения]/[узел:название].html

person iwish    schedule 01.10.2012
comment
В этом ответе должно быть больше мяса - person raam86; 01.10.2012

Это решение, которое я использую:

[node:menu-link:parents:join:/]/[node:menu-link]

Он будет разделять пункты родительского меню тире. Это то, что мне нужно.

person Marcos Buarque    schedule 17.10.2012

Для тех, кто натыкается на этот ответ и задается вопросом, как добавить это:

Конфигурация> Поиск и метаданные> Псевдонимы URL, затем создайте на вкладке «Шаблоны».

person Robert_T_Taylor    schedule 29.08.2017