Как вывести view по 2м аргументам?

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

Аватар пользователя VasyOK VasyOK 30 апреля 2023 в 8:33

Приветствую drupal.ru!

Девелеперы, подскажите: как создать вьюху по 2м аргументам? Допустим есть 2 словаря таксономии. Тип товара и бренд. Как вывести вьюху по адресу smartphones/samsung ?

Может туплю, но не понимаю...

Лучший ответ

Аватар пользователя VasyOK VasyOK 3 мая 2023 в 13:12

Мне почему-то кажется что это можно сделать без хардкодинга. Точнее хардкодинг уже реализован модулем views_url_path_arguments, который мне подсказал Андрей Марасса.
Т.е. вот так работает:

А что не работает -уже не помню. Вот сейчас вспоминаю...

Комментарии

Аватар пользователя VasyOK VasyOK 30 апреля 2023 в 9:57

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

Аватар пользователя Andruxa Andruxa 30 апреля 2023 в 10:09

Вьюхе надо передать id типа товара и id бренда.
Либо - в собственном контроллере извлекать из пути нужные id, дергать там же $view = Views::getView('view_name'), передавать в него полученные id $view->setArguments([$id1, $id2])
и возвращать в качестве render_array полученный результат return $view->execute('display_id')
или же писать свой views плагин для аргументов, который будет так же преобразовывать части пути в id, но делать это внутри вьюса.

Аватар пользователя gun_dose gun_dose 30 апреля 2023 в 11:00

Я делал так:
1. Создаём вьюху страницу с урл /catalog/{term1}/{term2}
2. Создаём кастомный блок или вьюху, которая где-то будет выводить ссылки на такие страницы.
3. Если это кастомный блок, то прямо в коде, а если вьюха, то в препроцессе ссылок. Создаём алиасы под каждый такой урл и выводим алиасы. Естественно, сначала надо проверять существует ли алиас. Получаем на выходе урлы типа /catalog/smartphones/samsung

Аватар пользователя gun_dose gun_dose 30 апреля 2023 в 17:21

В смысле, что если ты не будешь это проверять, то они будут создаваться при каждом просмотре до бесконечности

Аватар пользователя Andruxa Andruxa 30 апреля 2023 в 13:17

Например, Samsung не делает роутеры, а Zyxel - смартфоны, соответственно, по алиасам
/catalog/routers/samsung
/catalog/smartphones/zyxel
будет пустая выдача во вьюсе.

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

Аватар пользователя VasyOK VasyOK 30 апреля 2023 в 20:44
1

/catalog/smartphones/zyxel
будет пустая выдача во вьюсе. Этой ссылки на сайте не будет. Если человек туда каким-то чудом зайдет - в views есть поведение при отсутствии результатов.

Аватар пользователя VasyOK VasyOK 3 мая 2023 в 13:12

Мне почему-то кажется что это можно сделать без хардкодинга. Точнее хардкодинг уже реализован модулем views_url_path_arguments, который мне подсказал Андрей Марасса.
Т.е. вот так работает:

А что не работает -уже не помню. Вот сейчас вспоминаю...