Календарь списком: сортировка во Вьюс от сегодняшней даты и выше по полю типа date, поле без года и не repeate

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

Аватар пользователя tlito tlito 13 января 2015 в 0:30

доброго времени, позитивной даты!
У меня задача временная, так как нормального решения календаря я еще не нашел, а праздники отобразить уже надо.
Основная причина проблем - у меня даты не повторяются, нет date_repeate, так как я пробовал чтобы повторялись и вышло так: http://www.drupal.ru/node/114770

Мне нужно так:
у меня есть праздники с датой типа date без года, с заголовком и текстом. Модуль date_repeate ОТключен.
надо сделать страницу Вьюс, по материалам типа "Праздник" - вывод в строку - дата и заголовок праздника.
Так уже есть, но сортируется пол полю дата от самого начала, то есть от первого января

то есть получатся примерно так:
1 января Новый год
14 января Старый Новый год
14 января День Трубопроводных войск РФ
14 февраля День святого Валентина
8 марта Международный женский день
1 июня Международный день защиты детей
2 августа День ВДВ

То есть пользователю представляется упорядоченный, но от самого начала года список, а надо - от сегодняшней даты и по кругу.

Нужно, чтобы отображались первыми даты которые сегодня и следующие за этой, то есть если открыть страницу 14 января, то вьюс должен быть таким:

14 января Старый Новый год
14 января День Трубопроводных войск РФ
14 февраля День святого Валентина
8 марта Международный женский день
1 июня Международный день защиты детей
...

а если дата посещения страницы будет 1 августа, то первым должна быть запись:
2 августа День ВДВ
1 января Новый год
14 января....

Как мне во вьюс это задавать? то есть тип сортировки ascending и выше сегодняшней даты?
там есть filter больше или равно now. Но ведь now - Это 2015 год, а у меня в базе все эти даты имеют год 0000, поэтому не выводятся если так фильтровать. Да и мне нужно не фильтровать а сортировать причем по кругу.
Может проще php написать, как тогда выводить все эти даты и заголовки ссылками?

Комментарии

Аватар пользователя gun_dose gun_dose 13 января 2015 в 9:26

нужно добавить фильтр, чтобы дата была больше, либо равна сегодняшней. А для отображения праздников, переходящих на следующий год можно сделать ещё одно такое же представление, но с инвертированным фильтром и вставить его в подвал текущего.

Аватар пользователя tlito tlito 13 января 2015 в 10:45

вы правы, есть такое как Больше или равно - enter relative date - now
но сейчас 2015 год, а у меня в базе все даты с годом 0000.
мне как-то нужно ввести now частично - только день и месяц, я пробовал:
date("j,m"); - просто не выводит ничего, now соответственно тоже.

Аватар пользователя gun_dose gun_dose 13 января 2015 в 10:50

"tlito" wrote:
date("j,m"); - просто не выводит ничего, now соответственно тоже.

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

Аватар пользователя tlito tlito 13 января 2015 в 11:17

Filter: Содержимое:Дата, Date selection form element: Выбрать, Filter granularity: Месяц,
Оператор:Равно, Enter a relative date: date("m", strtotime("now"));
ничего не выводит, хотя в январе добавлено праздников.

Аватар пользователя tlito tlito 13 января 2015 в 11:20

и еще вопрос, как фильтер грануларити будет искать вначале в этом месяце, но больше и равно чем сегодня, потом больше чем этот месяц, а потом меньше чем месяц и потом меньше чем сегодня но в этом месяце - это получается много блоков придется делать.

Аватар пользователя gun_dose gun_dose 13 января 2015 в 18:52

Во-первых, фильтр гранулярити должен быть день. Во-вторых, оператор должен быть "Больше либо равно". Тогда никаких дополнительных блоков не надо. Вот только вопрос с годом остаётся открыт. Как вариант, назначить все праздники на текущий год и сделать небольшой модуль с хуком для крона, по которому каждый день праздник, у которого дата "вчера", будет сам переноситься на следующий год