Views - модуль Drupal. Поиск и фильтрация.

Views - модуль Drupal. Поиск и фильтрация.

Views — мощнейший модуль Drupal для создания любых представлений из существующих типов материалов, или созданных в модуле CCK. Возможности модуля Views позволяют отображать в представлениях нестандартные поля, аргументы, и фильтрацию записей. Вы можете строить представления для отображения: пользователей, материалов, категорий и отображать их на страницах, в блоках и RSS-лентах.

Завяжем с предисловием и перейдём к делу! Рассмотрим достаточно распространенную задачу создания специализированного поиска по материалам. На первый взгляд может показатсья что это не совсем задача модуля Views, но и это ему по плечу. Конечно он не индексирует материалы, и такой поиск будет тяготить систему, но модуль views дает гибкость, которую сложно добиться от стандартного поиска.

Вообще в моем случае задача была поставлена в несколько ином виде. Нужно было предоставить возможность фильтрации записей, но сокрыть от глаз пользователя информацию, которая ему просто ни к чему. В принципе получается весьма похоже на поиск:) Используемая версия views 6.x-2.2. Это на всякий случай.

По порядку:

  • создаем интересующее нас представление;
  • добавляем exposed фильтр, т.е. раскрытый фильтр. Тот самый фильтр, который нам требуется. Их может быть несколько, но нас интересует обязательное введение хотя бы одного критерия, для получения результата, иначе представление должно быть пустым.
  • добавляем аргумент Global:Null. И настраиваем его, как описано далее.
  • Действие при отсутствуеющем аргументе (Action to take if argument is not present): предоставить значение по умолчанию (Provide default argument).
  • Тип аргумента по умолчанию (Default argument type): фиксированное значение (Fixed entry). И вводим в поле текст, у меня rnd.
  • Опции валидатора (Validator options): php-код.
  • В поле кода проверки вставляем код:
    foreach ($view->get_exposed_input() as $filter=>$value){
    if ($value!=='' && ($key!='rnd' && $value!='All'))
    return TRUE;
    }
    $view->display['page_1']->handler->set_option('empty','');
    return FALSE;
  • действие предпринимаемое при завале валидации (Action to take if argument does not validate): показать пустой текст (Display empty text). Подразумевается текст отображаемый при пустом представлении.
  • сохраняете.

Что делает этот кусок кода?

  • получает значения открытых фильтров переданные в представления;
  • если хотя бы одно из проверяемых значений не пусто, но при этом не является нашим условным значением rnd или "All" (то есть все), то валидация проходит успешно;
  • иначе для нашего представления устанавливается отображение пустого текста.

В принципе все достаточно просто, но нашел всё это я не сразу, поэтому и решил описать.

Удачи с освоении модуля views для drupal да и других тоже!

 

вернуться назад

Комментарии

всегда открыт для обратных

всегда открыт для обратных ссылок)))

Вау, спасибо! Вы мне очень

Вау, спасибо!
Вы мне очень помогли!