views

УрокПрограммное изменение запроса к базе данных во Views

Возникают ситуации, когда необходимо сделать во Views фильтр с помощью программного вмешательства. Например, совсем недавно я реализовывал такую задачу:

Есть тип материала "акция". Акция содержит поле со списком городов (чекбоксы), к которым она приурочена. В шапке сайта есть выпадающий список с этим же списком городов. На главной странице сделана вьюха, которая выводит акции по городам, т.е. в зависимости от выбранного города из выпадающего списка в шапке сайта. Так как это должно работать и для анонимов, то выбранный город решено хранить в сессии пользователя. А Views не даёт возможности подставить значение в фильтр из сессий. Следовательно, пришлось создать небольшой модуль, который изменяет запрос вьюса к базе данных, подставив в качестве фильтра города значение из сессии пользователя.

УрокViews 2: Отображение количества элементов под их выводом

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

Если вы не боитесь использования PHP снипетов внутри вьюхи, то в настройках вьюса в подвале (footer) укажите формат ввода - php code и вставьте туда вот это:

<?php
  $current_view = views_get_current_view();
  print count($current_view->result);
?>

Это же можно сделать и другим способом. Например, через свой модуль. Для этого надо имплементировать хук hook_views_pre_render():

УрокViews 3: сортировка результатов по длине заголовка

Если вы хотите вывести результаты во вьюсе, отсортировав их по длине заголовка, то имплементация хука hook_query_TAG_alter() поможет в этом:

<?php
/**
* Implements hook_query_TAG_alter().
*
* @param SelectQuery $query
*/
function ИМЯМОДУЛЯ_query_VIEWNAME_alter(SelectQuery $query) {
  $query->addExpression('LENGTH(node.title)', 'title_length');
  $query->orderBy('title_length', 'DESC');
}
?>

УрокДобавление своей таблицы в качестве поля во Views

Не так давно попалось мне забавное задание - написать поиск по всем полям одного типа материала, включая приложенные файлы. Решил всё делать через раскрытые фильтры Views (exposed filters). И всё бы по всем полям ищет прекрасно - текстовые, таксономия, числовые. Но вот с загруженными файлами возникла проблема - по ним-то Views не бегает.

УрокМодули, которые делают жизнь проще, а солнце ярче

Сейчас я расскажу об основных и дополнительных модулях друпала, без которых выполнение некоторых задач было бы сильно осложнено, особенно на начальном этапе. Все модули актуальны для 6 версии CMS Drupal.

Основные модули друпала - мастхэв

  • cck - добавляет возможность создавать в содержимом допонительные поля (фотографии, текстовые поля, числовые, емейлы, загрузка файлов, голосование и прочее)
  • views - можно сказать, основной модуль друпала. В связке с cck обретает невероятную силу, получая +4 поинта к скорости настройки сайта и +5 к гибкости настройки системы :) Позволяет создавать легкоизменяемые блоки, страницы, меню, новостные ленты и прочие составляющие сайта. Новичкам может показаться слегка сложным, но потратив пару часов на освоение минимальных его возможностей, вы уже ощутите ту лёгкость, с которой можно создавать новые элементы сайта.

ВидеоСоздание материалов новых типов и вывод ссылки на них в меню

Этот видеоурок создан для наглядного пособия для начинающих друпалеров. Здесь мной описан способ создания нового типа материала, и как его настроить через views. В итоге я получил меню со ссылкой на страницу со списком материалов созданного нами.