[РЕШЕНО] Каталог по двум терминам с синонимами url этих терминов в пути

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

Аватар пользователя dayaoleg dayaoleg 17 марта 2017 в 0:23

Есть два словаря таксономии: "Товары" и "Производители".
Для примера в одном термины: Товар1, Товар2, Товар3. в другом: Производитель1, Производитель2, Производитель3.
Необходимы страницы с пересечениями по этим терминам. Например показать ноды которые прицеплены к Товар1 и Производитель2.

Я знаю пару стандартных способов как это сделать но используя tid в пути?
Например: taxonomy/term/1+5
Или Vievs с двумя контекстными фильтрами по "Имеет термин таксономии", так мы может получить более гибкий адрес, например: katalog/1/5

Но у меня задача получить путь состоящий из синонимов этих терминов.
Например у термина Товар1 синоним tovar1, а у термина Производитель2 синоним proizvoditel2
И в итоге мне нужно получить страницу с url типа katalog/tovar1/proizvoditel2 которая бы выводила ноды из терминов Товар1 и Производитель2.

Может кто знает не очень сложное и не ресурсоемкое решение?

Комментарии

Аватар пользователя gun_dose gun_dose 17 марта 2017 в 6:47

Всё просто - алиас можно повесить на любой существующий путь. Т.е. вручную можно задать, что catalog/1/5 = phones/samsung. Генерировать урлы можно батчем или в хуке сохранения термина.

Аватар пользователя dayaoleg dayaoleg 17 марта 2017 в 19:43

Спасибо. Идея интересная, но если учесть что в каждой таксономии может быть свыше тысячи терминов, то становится немного страшно думать о том что будет во время создания термина. Ведь три этом придется добавить более 1000 алиасов, а при удалении термина, проследить за их удалением. А суммарное количество алиасов при этом перевалит за 1 000 000.

На самом деле на текущий момент мы с товарищем уже заточили модуль под это дело. Получился совсем небольшой код и с минимальной нагрузкой.

Если кратко, то делаем страницу views с адресом catalog/%/% и контекстными фильтрами по tid, далее в hook_url_inbound_alter с помощью drupal_lookup_path достаем tid'ы из текущего урла (например catalog/tovar1/proizvoditel2) и передаем обратно в &$path нужную ссылку с tid'ами (например catalog/1/5). В итоге на странице catalog/tovar1/proizvoditel2 грузится views с контекстными фильтрами по нужным нам таксономиям.