Очень часто необходимо вывести список пользователей у которых сегодня день рождения. Для этого можно использовать поле типа Date и Views. К сожалению во Views нельзя сделать фильтрацию по полю даты, так как такая фильтрация подразумевает точное совпадение даты. Необходимо указать год, что в случае дня рождения не подходит, так как нужна не точная дата, а совпадение месяца и дня.
Можно сделать вывод списка с помощью отдельного модуля, но иногда использовать views удобнее,так как можно гибко настраивать, какие поля выводить и в каком виде.
Итак задача: сделать вывод списка пользователей, родившихся сегодня, с помощью Views.
Шаг 0. Добавляем поле типа Date к User сущности
Поле должно называться Birthday (внутреннее название - field_birthday).
Шаг 1. Создаем View.
Administration > Structure > Add New View. Называем View - Birthdays. View должен выводить пользователей (Show Users).
Нажимаем "Сохранить и продолжить" (Save & Continue).
Шаг 2. Добавляем контекстный фильтр.
Выбираем поле User: Birthday (field_birthday) и нажимаем кнопку добавить (Add).
Шаг 3. Настройка фильтра.
В настройках фильтра, указываем опцию "Provide default value". Выбираем PHP Code.
Вставляем в поле следующий код:
$results = db_query("SELECT entity_id FROM field_data_field_birthday WHERE DATE_FORMAT(field_birthday_value,'%m-%d') = DATE_FORMAT(NOW(),'%m-%d') AND entity_type = 'user'"); $ids = array(); foreach ($results as $result) { $ids[] = $result->entity_id; } return implode(',',$ids);
Осталось только отметить в настройках фильтра "Allow multiply values" и сохранить View. После этого можно открыть страницу Birthdays на сайте: http://site.com/b?q=birthdays и наслаждаться списком пользователей :-)