Имеем словарь:
Нужно с помощью Pathauto создать для каждого термина синоним с учётом вложенности, т.е:
catalog/kuhnya
catalog/kuhnya/holodnie-zakuski
catalog/kuhnya/salati
catalog/kuhnya/salati/ovochnie
catalog/kuhnya/salati/myasnie
catalog/napitki
catalog/napitki/alkogolnie
catalog/napitki/bezalkogolnie
Чтобы это реализовать, достаточно прописать термину шаблон:
catalog/[term:parents:join-path]/[term:name]
Pathauto удалит пустоты из синонимов, которые не имеют родителей, и на выходе получатся красивые человекопонятные иерархические адреса.
Способ подходит как для Drupal 7 так и для Drupal 8.
Написанное актуально для
Drupal 7, Drupal 8
Похожие записи
- Программно наполнить меню ссылками на термины таксономии
- Вставка в CKEditor видео из ВКонтакте и Rutube (расширение модуля CKEditor 5 Media Embed)
- Как из PhpStorm выполнить тест(ы)
- Как работает опция "Aggregation type" в настройках полей Views при включённой агрегации
- Создание сравнительной таблицы с значениями из EAV Field
Комментарии
а что старого доброго catpath-raw уже нету?
Есть замечательный модуль http://drupal.org/project/nodehierarchy. Позволяет удобно создавать разнообразные иерархии и при помощи токена [fullhierarchytitlepath-raw] указывать полный иерархический путь.
не нашёл
он для нод
Эй, xandeadx чё творим? Этож геморойынй способ! А если родительских терминов с десяток?
В семерке возможностей токена больше, но алгоритм другой, так правильней будет:
menu/[term:parent:url:alias]/[term:name]
Или можно
[term:parent:url:path]
использовать, чтоб наверняка, но никак не [term:...:parent:name]не работает! получается каша:
тоже не работает
другого рабочего не нашёл, может в новых версиях Token появятся соответствующие токены, но пока видимо только так
хм... похоже я лохонулся... такой способ обычно использую:
[term:parent:url:alias]/[term:name]
Но когда надо впереди еще адрес подставить, будь то menu, или имя словаря он не работает, действительно каша получается...
Установлено:
Pathauto 7.x-1.0-rc2
Token 7.x-1.0-beta3
Но
[term:parent:parent:name]/[term:parent:name]/[term:name]
что-то не срабатывает...удалите все синонимы
admin/config/search/path/delete_bulk
создайте заново
admin/config/search/path/update_bulk
должно работать
А не подскажите, как задать иерархические термины для другого словаря?
Есть словарь с адресами и словарь с номерами домов
1 словарь: Город > Улица
2 словарь: 1, 1А, 2, 3, 4, 4А, 4Б...
для первого словаря создаю алиасы так: adresa/[term:parent:name]/[term:name]
для второго хотелось бы так: adresa/[term:parent:name-СЛОВАРЬ1]/[term:name-СЛОВАРЬ1]/[term:name]
до этого второй словарь у меня был как поле, но хочется сделать вывод информации не только по улицам, но и по домам
Нашел здесь как всегда ответ на свой вопрос: как прописать всех родителей пункта меню - у меня меню обязательный пункт
[node:menu-link:parent:parent:parent:title]/[node:menu-link:parent:parent:title]/[node:menu-link:parent:title]/[node:title].html
3-х родителей максимум достаточно, а то слишком длинный урл получится...))
а фиршка в :parent:parent:parent:
а когда нет родителей, то он их и не пишет и лишние слеши тоже удаляет
хотя конечно странно что нет в 7-ке одного токена для всех родителей...)))
А какой шаблон нужен для того, чтобы адрес выглядел так:
site.ru/пукт меню/пункт подменю/имя ноды
Существенное уточнение - у меню и главное и дочернее меню - на основе таксономии...
Ну с таксономией вроде бы стало понятно что и как, и главное, что работает...
А вот с путями для материалов, те что для меню, где шаблоны через
[node:field-categories-top:parent:name]/[node:field-categories-top:name]/[node:title]
так ничего и не выходит, и если нужно вывести http://.../name1/name2/name3, то второй элемент name2 упорно не хочет появляться...
Уже крутил и так и сяк - не выходит никак!
Не подкините реально рабочую заготовку?
Упс... походу ступил удалить синонимы :) так что все работает :)
А с нодами что-то так не выходит по шаблону, ну разве что они не в меню автоматом скачут. Максимально что получилось это [node:content-type]/[node:title] (если название материала ноды и термина таксономии совпадает, то еще туда-сюда), а можно так: [node:field_category]/[node:title], но все родительские термины идут через разделитель "-"(тире), а не через "/"(слэш).
Может есть идеи как без включения в меню самих нод достичь аналогичной с таксономией иерархии?
Подскажите пожалуйста, как сделать альтернативный синоним у термина?
Скажем у нас есть url адрес как у вас на примере: catalog/kuhnya/holodnie-zakuski
Кухня - это главный термин. Pathauto + Transliteration на выходе получается синоним = kuhnya
Я же хочу не меня имя термина "Кухня " получить синоним к примеру = stolovaya
Далее на выходе все терминов должно получится:
catalog/stolovaya
catalog/stolovaya/holodnie-zakuski
catalog/stolovaya/salati
catalog/stolovaya/salati/ovochnie
catalog/stolovaya/salati/myasnie
И что бы он работал даже после "массового обновления" всех синонимов :)
добавьте для терминов новое поле, например translit name. и используйте его вместо имени термина
подскажите какой токен нужно использовать чтобы создать такую же правильную иерархию?
[term:имя-поля]
Все решилось простыми шаблонами
Для Таксономии:
[term:parent:parent:field-term-url]/[term:parent:field-term-url]/[term:field-term-url]
Для Материала:
[node:field-category:parent:parent:field-term-url]/[node:field-category:parent:field-term-url]/[node:field-category:field-term-url]/[node:nid]-[node:title]
Спасибо!
статья дополнена информацией о новом токене
xandeadx
Подскажите пожалуйста токен для путей нод
в данный момент для таксономии:
[catpath-raw] - создается полная иерархия
для нод пробовал:
[termalias-raw] - работает, НО
[termpath-raw] - работает, НО
при использоватении двух таксономий в ноде, т.е. "Категории" и "Теги"
http://plasmon.rghost.ru/39063831/image.png
урлы создаются из таксономии "Тегов", мне же нужно чтобы создавались из таксономии "Категорий"
в 7 друпале это все решается путем подстановки имени категории, к примеру [node:field-category]
а как быть в 6 ом друпале?
Замечательный модуль. Со страницами таксономии все замечательно, [term:parents:join-path] работает отлично. Но что делать если у меня материал, у него есть поле term reference, в котором можно выбрать неограниченное количество терминов. И стоит модуль term reference tree, который настроен так, что если я выберу дочерний термин, то все его родители также автоматически добавляются. Если выставить в настройках только возможность выбора только одного термина то в patchauto в шаблонах есть [node:field-category:parents:join-path], а если же выбрать возможность добавления неограниченного количества терминов к материалу то в шаблонах этот токен исчезает. Подскажите есть ли решение в данной ситуации? Необходимо вывести через слеш в урл все добавленные к материалу термины таксономии соблюдая иерархию словаря.
пользуйтесь способом, описанным в статье
В настройках patchauto для контента токен [term:*любой текст*] не принимается.
Выше предлагали для контента сделать так:
[node:field-category:parent:parent:field-term-url]/[node:field-category:parent:field-term-url]/[node:field-category:field-term-url]/[node:nid]-[node:title]
Но таких токенов нету если в настройках типа материала выбрана опция, позволяющая добавлять неограниченное количество терминов таксономии. Появляются другие группы токенов, в виде [node:field-category:1] [node:field-category:2] [node:field-category:3]
включите модуль entity tokens
Включен
значит что-то не то делаете http://s2.hostingkartinok.com/uploads/images/2012/08/a9d2754938ceb314e9…
Вот с этими токенами и не получается сделать путь из неограниченного количества выбранных терминов, максимум 3. Если выставить в настройках максимум 1 термин, то токенов больше, и есть необходимые.
максимум не ограничен, все необходимые токены доступны
*/[node:field-category:3:parent:parent]/[node:field-category:3:parent]/[node:field-category:3:name]
Вот так пробовал, и по нарастающей вместо звездочки на 5 родителей. Отображает только 4 самых верхних термина.
Подскажите пожалуйста, что я делаю не так?
не знаю, у меня всё нормально отображается
Может чуть не по теме, но спрошу. имею такую проблему:
есть каталог
внутри разделы "чай", "специи", "аксессуары", внутри подразделы, в чае это "зеленый", "черный" итд. в них вьюшками блоки товара, переходим на сам товар и тут хочется видеть хлебную крошку "главная/чай/зеленый/название товара (без ссылки название)". использую таксономи крошку, вставил строку вывода в ноду товара, в самом модуле выбрал чтобы отображалась в продуктах, осталось лишь прописать в таксономии Breadcrumb path (taxonomy_breadcrumb). что туда прописать, не пойму. и да, это 6 друпал
Это где ж такой токен то взять [term:parent:url:alias] ?
Как я понимаю, создать алиас - полдела. А как вызвать его во views, если в контекстном фильтре нет такого токена в списке?
Вопрос нубский, но все же - как вызвать не tid или nid, и не name или title, а транслитерированный вариант с дефисами вместо пробелов? Можно ли это сделать средствами только Друпала, или необходимо писать php-код для этого?
какая задача?
Создать views с контекстным фильтром, вызывающий показ одной страницы (в случае views для одной страницы), и по синониму термина таксономии для случая показа списка материалов, задавая в контекстном фильтре в качестве параметра последнюю часть синонима заголовка ноды и синонима термина.
То есть для статей задаем article/kak-vyvesti-nodu - при этом в контекстный фильтр подаем "kak-vyvesti-nodu" (title: Как вывести ноду), и получаем показ статьи через views. (При этом путь - article/%)
Для термина:
article2/imya-termina (term:name Имя термина), и получаем заданный вывод списка материалов для такого синонима. (путь - article2/%).
Или можно как-то по-другому задать такой вывод?
А если у меня вложенная таксономия, и я хочу, чтобы в адресе был корневой родитель, если таковой имеется, либо непосредственно термин ноды, если родителя нет? Что-то я пока не нашел реализации...
Гость, Пнд 25/04/2016 - 20:52:
https://www.youtube.com/watch?v=3oAYDPSb3D4
О это то что мне было очень нужно!!! Спасибо Спасибо Спасибо!!!
Добавить комментарий