Как реализовать (и возможно ли) иерархический поэтапный фильтр таксономии через Views [РЕШЕНО]

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

Аватар пользователя Waraha Waraha 21 марта 2015 в 15:47

Приветствую!

Делаю сейчас доску объявлений в которой один тип материала - "Объявление" и несколько полей со словарями, по которым пользователь во вьюхе может фильтровать объявления.

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

Хочется организовать это дело так, чтобы пользователь мог выбирать категорию товара навроде как это реализовано на страницах техподдержки, когда драйвер хочешь скачать Smile Т.е. сначала выбираешь в списке свое устройство, потом, когда выбрал, тебе становится доступен выбор из операционных систем, в отдельном списке, и т.д. Или еще я видел реализацию с населенными пунктами такую же, например ВКонтакте - сначала страну выбираешь, потом становится доступен выбор города, и т.д.

В общем, хочется как-то обойти этот момент с простыней-словарем. Разбить один выпадающий список на несколько. Как это лучше сделать? Посоветуйте пожалуйста.

И еще вот что, здесь же: как сделать, чтобы при выборе в фильтре категории, в выводе отображались и подкатегории? То есть, выбираешь например "Женская одежда", а он чтобы показывал объявления и из подкатегорий "Женские блузки" и "Женские юбки" и т.д. Потому что в словаре таксономии оно иерархическое, а фильтр этого не понимает, и считает их все одним уровнем, т.е. при выборе "Женская одежда" нечего не выводится, хотя в "Женские блузки" и "Женские юбки" объявления есть.

Спасибо!

Комментарии

Аватар пользователя Waraha Waraha 21 марта 2015 в 21:33

"bumble" wrote:

Hierarchical Select более сложный, и более глючный (правда я его уже давно не юзал).

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

Правда, какой-то косяк с темизацией в дочерней теме от Bootstrap - Select выглядит как будто css для него не писан - отличается от остальных своей первозданностью Smile Сейчас буду смотреть в чем тут соль. У вас такое было?

Аватар пользователя bumble bumble 21 марта 2015 в 21:50

"Waraha" wrote:
Правда, какой-то косяк с темизацией в дочерней теме от Bootstrap - Select выглядит как будто css для него не писан - отличается от остальных своей первозданностью Smile Сейчас буду смотреть в чем тут соль. У вас такое было?

Такое может быть из-за того, что темизация select'а происходит из внешнего источника, например js, например плагин Chosen.
Т.е. стиль прописан для видимых объектов. А т.к. модуль подгружает (фактически добавляет) новые селекты, они будут темизированны только после перезагрузки.

Попробуйте задать стиль для всех селектов в глобальном css-файле.

Аватар пользователя Waraha Waraha 21 марта 2015 в 22:16

"bumble" wrote:
Такое может быть из-за того, что темизация select'а происходит из внешнего источника, например js, например плагин Chosen.
Т.е. стиль прописан для видимых объектов. А т.к. модуль подгружает (фактически добавляет) новые селекты, они будут темизированны только после перезагрузки.

Попробуйте задать стиль для всех селектов в глобальном css-файле.

Ага, порылся сейчас, нашел:

в Bootstrap красивое:) форматирование селекта было реализовано через класс .form-control самого селекта.

пришлось поправить shs/js/shs.js в двух местах добавить после

.addClass('shs-select')

две строки:

// form-control для форматирования темы Bootstrap - добавлено мной (RD)
.addClass('form-control')

расписываю, бо вдруг кому-то еще пригодится Smile

теперь отображается в общем стиле, правда, добавочные селекты почему-то не в линию, а с новой строки, будто оно их в div помещает..
ладно, это уже нюансы Smile

Аватар пользователя Waraha Waraha 21 марта 2015 в 22:36

..ага, в общем, там в этом .form-control есть width:100% - оно поэтому их растягивает на всю ширь, соответственно, следующему селекту приходится с новой строки размещаться.

перезаписал в своем css-owerride так:

.form-control {
width:inherit;
}

теперь второй селект как и положено inline создается Smile

Правда, если будет много уровней иерархии, может оно и лучше, если будет каждый с новой строки - не так бардачно смотрится, но это уже дело вкуса -)