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

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

Аватар пользователя gun_dose gun_dose 18 июля 2016 в 15:14

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

Как быть?

Комментарии

Аватар пользователя sergeybelya sergeybelya 18 июля 2016 в 15:53

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

Аватар пользователя gun_dose gun_dose 18 июля 2016 в 15:58

Lotar wrote:

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


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

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

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

Аватар пользователя sergeybelya sergeybelya 18 июля 2016 в 16:00

gun_dose wrote:

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

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

Аватар пользователя gun_dose gun_dose 18 июля 2016 в 16:06

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

Аватар пользователя dgastudio dgastudio 18 июля 2016 в 16:02

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

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

Аватар пользователя gun_dose gun_dose 18 июля 2016 в 16:08

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

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

Аватар пользователя dgastudio dgastudio 18 июля 2016 в 16:11

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

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

Аватар пользователя dgastudio dgastudio 18 июля 2016 в 16:39

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

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

Аватар пользователя Orion76 Orion76 18 июля 2016 в 17:58

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

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

Аватар пользователя VasyOK VasyOK 19 июля 2016 в 1:05

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

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

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

Аватар пользователя gun_dose gun_dose 19 июля 2016 в 0:46

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

Аватар пользователя gun_dose gun_dose 19 июля 2016 в 10:20

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

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