[РЕШЕНО] Списки выбора по полям CCK в расшаренных (exposed) фильтах Views

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

Аватар пользователя Lex-DRL Lex-DRL 3 декабря 2009 в 0:22

Дано:

  • Настроенные поля CCK, ограниченные списком допустимых значений.
  • Из соображений производительности и удобства этот список оформлен в виде key|label, т.е. пользователю отображается label, а в саму базу заносится key. Например:
    1|Красный
    2|Жёлтый
    3|Зелёный
  • Чтобы база весила меньше, все подобные поля выбора лучше делать типа integer (целочисленные).

Задача:

Добавить во вьюшку (View/Представление) расшаренный (exposed) фильтр, позволяющий пользователям отображать материалы в зависимости от значения поля.
По умолчанию фильтр Views выглядит как текстовое поле а-ля "значение больше", "значение равно"...

Решение

При создании фильтра надо всего лишь вместо "Содержимое: <поле>" выбрать "Содержимое: <поле> - Допустимые значения".

Дополнительно, можно сделать интерфейс фильтра ещё более дружелюбным, воспользовавшись модулем Better Exposed Filter - он позволяет заменить дефолтный блок выбора/дропдаун на галки/радиокнопки.

Огромное спасибо Kail@drupal.org за то, что не проигнорировал этот, как оказалось, простой вопрос - а указал на ошибку.

Комментарии

Аватар пользователя Kail@drupal.org Kail@drupal.org 3 декабря 2009 в 23:30

У меня в списке фильтров есть фильтры вида "Cодержимое: ... - Allowed values". В таком фильтре корректно подгружаются любые данные из полей-списков или ограниченных списком значений, правда, к сожалению, нету операторов "между", "менее, чем" и подобных.
Ещё есть разрабатываемый Views Filter Pack, не использовал, но можно посмотреть.

Аватар пользователя Lex-DRL Lex-DRL 4 декабря 2009 в 13:48

Спасибо огромное.
Похоже, не там копал. Я как запутался с непонятным "Cодержимое: ... - delta", так потом сразу проскакивал эту фазу, выбирая первый из предложенных вариантов.
А про Views Filter Pack - я про него тоже читал, но раз мне это надо для рабочего сайта - dev версии неприемлемы. Поэтому и остановился на Better Exposed Filter - он хотя бы бета.