Приветствую drupal.ru!
Девелеперы, подскажите: как создать вьюху по 2м аргументам? Допустим есть 2 словаря таксономии. Тип товара и бренд. Как вывести вьюху по адресу smartphones/samsung ?
Может туплю, но не понимаю...
Приветствую drupal.ru!
Девелеперы, подскажите: как создать вьюху по 2м аргументам? Допустим есть 2 словаря таксономии. Тип товара и бренд. Как вывести вьюху по адресу smartphones/samsung ?
Может туплю, но не понимаю...
Мне почему-то кажется что это можно сделать без хардкодинга. Точнее хардкодинг уже реализован модулем views_url_path_arguments, который мне подсказал Андрей Марасса.
Т.е. вот так работает:
А что не работает -уже не помню. Вот сейчас вспоминаю...
Комментарии
smartphones/samsung - это же алиас?
Ноды с таким алиасом на сайте нет.
Нужно чтобы вьюха по этому адресу показывалась которая выводит товары бренда.
Вьюхе надо передать id типа товара и id бренда.
Либо - в собственном контроллере извлекать из пути нужные id, дергать там же $view = Views::getView('view_name'), передавать в него полученные id $view->setArguments([$id1, $id2])
и возвращать в качестве render_array полученный результат return $view->execute('display_id')
или же писать свой views плагин для аргументов, который будет так же преобразовывать части пути в id, но делать это внутри вьюса.
Я делал так:
1. Создаём вьюху страницу с урл /catalog/{term1}/{term2}
2. Создаём кастомный блок или вьюху, которая где-то будет выводить ссылки на такие страницы.
3. Если это кастомный блок, то прямо в коде, а если вьюха, то в препроцессе ссылок. Создаём алиасы под каждый такой урл и выводим алиасы. Естественно, сначала надо проверять существует ли алиас. Получаем на выходе урлы типа /catalog/smartphones/samsung
"Естественно, сначала надо проверять существует ли алиас" - в смысле?
В смысле, что если ты не будешь это проверять, то они будут создаваться при каждом просмотре до бесконечности
Например, Samsung не делает роутеры, а Zyxel - смартфоны, соответственно, по алиасам
/catalog/routers/samsung
/catalog/smartphones/zyxel
будет пустая выдача во вьюсе.
Не то, чтобы это было смертельно, но пользователи обычно не любят, когда им парят мозг такими пустыми ссылками.
/catalog/smartphones/zyxel
будет пустая выдача во вьюсе. Этой ссылки на сайте не будет. Если человек туда каким-то чудом зайдет - в views есть поведение при отсутствии результатов.
Именно так
Мне почему-то кажется что это можно сделать без хардкодинга. Точнее хардкодинг уже реализован модулем views_url_path_arguments, который мне подсказал Андрей Марасса.
Т.е. вот так работает:
А что не работает -уже не помню. Вот сейчас вспоминаю...
В принципе работает. Но в зависимости от ситуации контекстных фильтра может быть тоже два.