[РЕШЕНО]Иерархические синонимы терминов таксономии в адресе ноды для Drupal 7

Главные вкладки

Аватар пользователя liveflow liveflow 21 ноября 2011 в 13:40

Дано: стандартный тип контента Article с полем field_tags - ссылка на термин из словаря Tags. В словаре - n-уровневая иерархия терминов (например это вложенные рубрики)
- термин1
-- термин1-1
-- термин1-2
--- термин 1-2-1
...
/Drupal 7.9, Pathauto 7.x-1.0, Token 7.x-1.0-beta7/

Задача: создать синонимы для страниц вида словарь/термин1/термин1-2/термин1-2-1/.../название-страницы.html

К примеру, для создания одноуровнего пути термин/название.html логично использовать такой паттерн

[node:field_tags]/[node:title].html

Для создания иерархии синонимов термина xandeadx предложил вот такй способ: http://xandeadx.ru/blog/drupal/372 с помощью такой записи (для трехуровневой иерархии):

catalog/[term:parent:parent:name]/[term:parent:name]/[term:name]

А как сделать тоже самое для термина в ноде?

Например тут аналогичный вопрос про родительские термины таксономии для материалов (nodes) http://www.drupal.ru/node/68765. В шестерке это решалось токенами вроде [termpath], [vocab] и т.д., а сейчас эту серию убрали, оставив лишь синоним термина. Может быть есть очевидные решения или готовые модули? Ведь задача из популярных. Прошу помочь советом.

Комментарии

Аватар пользователя Black_Devil Black_Devil 22 декабря 2011 в 18:43

neitrino wrote:
Поставьте Entity API
Тогда в pathauto появится токен [node:field-имя_поля:url:path]

нет такого токена после установки Entity API.
вы либо ошиблись с написанием токена, либо с названием модуля.

Drupal 7.10
Pathauto 7.x-1.0
Token 7.x-1.0-beta7
Entity API 7.x-1.x-dev

liveflow wrote:
Спасибо! Работает - модуль добавил множество новых токенов.

как решили проблему? какой токен использовали?

Аватар пользователя Black_Devil Black_Devil 4 января 2012 в 21:43

насколько я понимаю, нужный токен был в одной из dev версий модуля entity.
сейчас ссылку не вспомню, но на drupal.org видел обсуждение такого же вопроса. там проблему решили в июне 2011 другим токеном из entity, но и такого токена сейчас ни в релизе, ни в dev нет.

Аватар пользователя DenisVS DenisVS 25 января 2012 в 14:21

"neitrino" wrote:
Поставьте Entity API
Тогда в pathauto появится токен [node:field-имя_поля:url:path]

Получается полный URL, т.е. с лидирующим http://
В результате, оно всплывает в середине возвращаемого PathAuto адреса.

Аватар пользователя Black_Devil Black_Devil 3 февраля 2012 в 19:38

я это сделал!
[node:field-tags:parent]/[node:field-tags]/[node:title]

DenisVS, решение скрыто во 2 твоей ссылке. именно про неё я и писал выше.

для решения проблемы нужен модуль entity api, но есть нюансы.
если хотите использовать только стабильную версию модуля, то придётся создать словарь таксономии (дополнительный или вместо tags, не могу сказать точно. я создавал дополнительный. может быть будет работать если tags вообще удалить. не проверял). со словарём tags, который присутствует по дефолту и текущей стабильной версией entity api 7.x-1.0-rc1, токен [node:field-tags:parent] не появится.
если не брезгуете dev версией, то создавать словарь не нужно. entity api 7.x-1.0-rc1+29-dev от 1 февраля прекрасно работает с дефолтным словарём tags.
токен [node:field-tags:parent] появится только если поставить в настройках поля словаря кол-во значений = 1.
также, советую в настройках поля поставить галочку обязательного поля. иначе при незаполненных тегах, прощай красивая ссылка.
чтобы не нарушать структуру ссылок, тип виджета поля словаря изменил с автозавершения на выбор из списка. это не позволит использовать термины отсутствующие в словаре (читай создать термин) и таким образом нарушить структуру.

вложенность увеличивается по аналогии с 1 постом в этой теме.

p.s. если кто догадается как сделать правильнее, буду рад выслушать. потому что этот способ не идеален.

Аватар пользователя Maxot Maxot 6 июля 2015 в 13:44

Black_Devil wrote:
я это сделал!
[node:field-tags:parent]/[node:field-tags]/[node:title]

DenisVS, решение скрыто во 2 твоей ссылке. именно про неё я и писал выше.

для решения проблемы нужен модуль entity api, но есть нюансы.
если хотите использовать только стабильную версию модуля, то придётся создать словарь таксономии (дополнительный или вместо tags, не могу сказать точно. я создавал дополнительный. может быть будет работать если tags вообще удалить. не проверял). со словарём tags, который присутствует по дефолту и текущей стабильной версией entity api 7.x-1.0-rc1, токен [node:field-tags:parent] не появится.
если не брезгуете dev версией, то создавать словарь не нужно. entity api 7.x-1.0-rc1+29-dev от 1 февраля прекрасно работает с дефолтным словарём tags.
токен [node:field-tags:parent] появится только если поставить в настройках поля словаря кол-во значений = 1.
также, советую в настройках поля поставить галочку обязательного поля. иначе при незаполненных тегах, прощай красивая ссылка.
чтобы не нарушать структуру ссылок, тип виджета поля словаря изменил с автозавершения на выбор из списка. это не позволит использовать термины отсутствующие в словаре (читай создать термин) и таким образом нарушить структуру.

вложенность увеличивается по аналогии с 1 постом в этой теме.

p.s. если кто догадается как сделать правильнее, буду рад выслушать. потому что этот способ не идеален.

Спасибо, работает!

Аватар пользователя neitrino neitrino 25 февраля 2012 в 21:42

Мда... Все прекрасно работало и работает.
Версия модуля 7.x-1.0-rc1
Создан словарь "Раздел" (section). При создании ноды выпадающий список с разделами (произвольной глубины).
Урлы нод генерятся по шаблону:
[node:field-section:url:path]/[node:nid]
ЧЯДНТ?

Аватар пользователя Black_Devil Black_Devil 25 февраля 2012 в 17:53

"neitrino" wrote:
ЧЯДНТ?

вот напиши вы сразу, что кол-во тегов в настройках словаря должно быть не больше 1, и всё было бы прекрасно.
а ещё, что entity 7.x-1.0-rc1 не работает с дефолтным словарём tags... Wink
но всё равно спасибо, ваш метод проще.