Как сделать Views без статичной части URL - только аргументы?

Тип материала: 
Версия Drupal: 
Ключевые слова: 
Модули и темы: 
Пнд, 18/07/2016 - 12:14

Есть магазин, в нём товары прикреплены к двум независимым словарям - бренды и категории. Нужно вывести категорию товаров определённого брэнда. Контекстными фильтрами пользоваться я умею. Вся загвоздка в том, что адрес такой выборки должен выглядеть вот так: example.com/brand/category, а вьюс не даёт создать страницу с адресом %1/%2

Как быть?

0 Спасибо

Комментарии

Аватар пользователя Lotar
9 months 2 недели назад Lotar #

А чо вьюс говорит?2 аргумента в урле он хавает насколько знаю.

0 Спасибо
Аватар пользователя sergeybelya
9 months 2 недели назад sergeybelya #

Имеется в виду, что кроме контекстных фильтров в урле не будет другого компонента, задачка реально сложная.
А принципиально иметь такие урлы? Доп. параметрами нельзя обойтись?

0 Спасибо
Аватар пользователя gun_dose
9 months 2 недели назад gun_dose #
Lotar написал:
А чо вьюс говорит?2 аргумента в урле он хавает насколько знаю.

и два хавает и три и алиасы вместо айдишников хавает, если уметь, а я умею. Вопрос в том, что перед аргументами должно стоять хоть что-то.

sergeybelya написал:
А принципиально иметь такие урлы?

Мне нет, заказчику - да.

0 Спасибо
Аватар пользователя sergeybelya
9 months 2 недели назад sergeybelya #
gun_dose написал:
и два хавает и три и алиасы вместо айдишников хавает, если уметь, а я умею. Вопрос в том, что перед аргументами должно стоять хоть что-то.

Ну так создайте просто страницу вьюху с каким-то адресом и допишите аргументы к ней.

0 Спасибо
Аватар пользователя gun_dose
9 months 2 недели назад gun_dose #

Не страницу вьюху, а N страниц вьюх, где N меньше либо равно количества брендов умноженного количество категорий. Это получится сороконожка на костылях

0 Спасибо
Аватар пользователя dgastudio
9 months 2 недели назад dgastudio #

ну и правильно не дает. в описанном вами случае, получается что он должен брать аргументы с главной.

единственное быстрое решение, facetapi + facetapi_pretty_paths

0 Спасибо
Аватар пользователя gun_dose
9 months 2 недели назад gun_dose #

Пробовал, но он тогда упорно в начало адреса пишет "taxonomy/term", и слайдер цены с ним почему-то ломается и выдаёт "Страница не найдена".

Но если у вас есть опыт настройки facetapi_pretty_paths, с благодарностью выслушаю.

0 Спасибо
Аватар пользователя dgastudio
9 months 2 недели назад dgastudio #

1. поставить дев версию оного
2. в настройках каждого фасеты, отметить галочку, reuse term alias

вроде как получится profit

0 Спасибо
Аватар пользователя goodboy
9 months 2 недели назад goodboy #

Может, сделать вьюв foo/brand/category , а потом hook_url_inbound_alter менять

0 Спасибо
Аватар пользователя dgastudio
9 months 2 недели назад dgastudio #

еще вариант
на все термины таксономии сделать урлы только по [term:name],
после чего поставить https://www.drupal.org/project/subpathauto и с ним уже ковыряться.

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

0 Спасибо
Аватар пользователя Orion76
9 months 2 недели назад Orion76 #

В хуке меню циклом по словарю, термин которого первый в пути, формируем меню.
колбэк меню - функция "обертка", вызывающая вьюс с нужными параметрами..

Еще можно с алиасами "поиграться"..

0 Спасибо
Аватар пользователя VasyOK
9 months 2 недели назад VasyOK #

Допустим:
samsung - урл бренда
samsung/phones - урл связки бренды+товары
Связка - это термин таксономии (или нода), на который ссылаются товары Galaxy S1, Galaxy S2 (телефоны Самсунг)

Почему делаю так - потому что так к Связке можно задать не только урл, но и кастомные метатеги и текстовые поля.

/*Добавлено*/
"А куплю-ка я что-нибудь от самсунга" - а почему бы и нет? Тем более батареек несколько видов одного бренда будет.
Неудобство только в том, что указывать на товаре придется не только бренд и тип, но и связь.

0 Спасибо
Аватар пользователя gun_dose
9 months 2 недели назад gun_dose #

Тоже думал о таком, выглядит просто и функционально. Надо подумать, может изначально словари неправильно построены. Например кому в здравом уме понадобится фильтрация только по бренду? Типа "А куплю-ка я что-нибудь от самсунга, батарейку или телевизор". Но тогда неудобно товары заполнять - нужно указывать сразу два поля из разветвлённых словарей. Может надо какие-то зависимые поля типа field_collection?

0 Спасибо
Аватар пользователя gun_dose
9 months 2 недели назад gun_dose #

О! Кажись придумал. Делаем изначально плоский словарь чисто по брендам, а потом на hook_node_save вешаем обработку, которая смотрит на ветку классификации каталога и к термину бренда пристаканивает всю эту ветку, как дочернюю (ну в смысле создаётся новая ветка, где термины с теми же названиями, что и в словаре каталога) , попутно навешивая эти термины на товар. А если ветка уже есть, то просто выбирает эту ветку как термины товара. И через Hierarchical Select ограничиваем выбор бренда только корневым термином, чтобы не захламлять форму создания ноды. Т.е. телефон самсунг окажется отклассифицирован по двум веткам: Телефоны/Мобильные/Лопаты и Самсунг/Телефоны/Мобильные/Лопаты.

Как вам такой велосипед?

0 Спасибо