Есть магазин, в нём товары прикреплены к двум независимым словарям - бренды и категории. Нужно вывести категорию товаров определённого брэнда. Контекстными фильтрами пользоваться я умею. Вся загвоздка в том, что адрес такой выборки должен выглядеть вот так: example.com/brand/category, а вьюс не даёт создать страницу с адресом %1/%2
Как быть?
Комментарии
А чо вьюс говорит?2 аргумента в урле он хавает насколько знаю.
Имеется в виду, что кроме контекстных фильтров в урле не будет другого компонента, задачка реально сложная.
А принципиально иметь такие урлы? Доп. параметрами нельзя обойтись?
и два хавает и три и алиасы вместо айдишников хавает, если уметь, а я умею. Вопрос в том, что перед аргументами должно стоять хоть что-то.
Мне нет, заказчику - да.
Ну так создайте просто страницу вьюху с каким-то адресом и допишите аргументы к ней.
Не страницу вьюху, а N страниц вьюх, где N меньше либо равно количества брендов умноженного количество категорий. Это получится сороконожка на костылях
ну и правильно не дает. в описанном вами случае, получается что он должен брать аргументы с главной.
единственное быстрое решение, facetapi + facetapi_pretty_paths
Пробовал, но он тогда упорно в начало адреса пишет "taxonomy/term", и слайдер цены с ним почему-то ломается и выдаёт "Страница не найдена".
Но если у вас есть опыт настройки facetapi_pretty_paths, с благодарностью выслушаю.
1. поставить дев версию оного
2. в настройках каждого фасеты, отметить галочку, reuse term alias
вроде как получится profit
Может, сделать вьюв foo/brand/category , а потом hook_url_inbound_alter менять
еще вариант
на все термины таксономии сделать урлы только по [term:name],
после чего поставить https://www.drupal.org/project/subpathauto и с ним уже ковыряться.
но, модуль с глюками. с наскока заставить работать не получится.
В хуке меню циклом по словарю, термин которого первый в пути, формируем меню.
колбэк меню - функция "обертка", вызывающая вьюс с нужными параметрами..
Еще можно с алиасами "поиграться"..
Допустим:
samsung - урл бренда
samsung/phones - урл связки бренды+товары
Связка - это термин таксономии (или нода), на который ссылаются товары Galaxy S1, Galaxy S2 (телефоны Самсунг)
Почему делаю так - потому что так к Связке можно задать не только урл, но и кастомные метатеги и текстовые поля.
/*Добавлено*/
"А куплю-ка я что-нибудь от самсунга" - а почему бы и нет? Тем более батареек несколько видов одного бренда будет.
Неудобство только в том, что указывать на товаре придется не только бренд и тип, но и связь.
Тоже думал о таком, выглядит просто и функционально. Надо подумать, может изначально словари неправильно построены. Например кому в здравом уме понадобится фильтрация только по бренду? Типа "А куплю-ка я что-нибудь от самсунга, батарейку или телевизор". Но тогда неудобно товары заполнять - нужно указывать сразу два поля из разветвлённых словарей. Может надо какие-то зависимые поля типа field_collection?
О! Кажись придумал. Делаем изначально плоский словарь чисто по брендам, а потом на hook_node_save вешаем обработку, которая смотрит на ветку классификации каталога и к термину бренда пристаканивает всю эту ветку, как дочернюю (ну в смысле создаётся новая ветка, где термины с теми же названиями, что и в словаре каталога) , попутно навешивая эти термины на товар. А если ветка уже есть, то просто выбирает эту ветку как термины товара. И через Hierarchical Select ограничиваем выбор бренда только корневым термином, чтобы не захламлять форму создания ноды. Т.е. телефон самсунг окажется отклассифицирован по двум веткам: Телефоны/Мобильные/Лопаты и Самсунг/Телефоны/Мобильные/Лопаты.
Как вам такой велосипед?