доброго времени, позитивной даты!
У меня задача временная, так как нормального решения календаря я еще не нашел, а праздники отобразить уже надо.
Основная причина проблем - у меня даты не повторяются, нет 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 написать, как тогда выводить все эти даты и заголовки ссылками?
Комментарии
нужно добавить фильтр, чтобы дата была больше, либо равна сегодняшней. А для отображения праздников, переходящих на следующий год можно сделать ещё одно такое же представление, но с инвертированным фильтром и вставить его в подвал текущего.
вы правы, есть такое как Больше или равно - enter relative date - now
но сейчас 2015 год, а у меня в базе все даты с годом 0000.
мне как-то нужно ввести now частично - только день и месяц, я пробовал:
date("j,m"); - просто не выводит ничего, now соответственно тоже.
Это потому что даты, задаваемые через модуль date хранятся в базе в текстовом формате. Для каких-либо манипуляций с ними нужно сначала делать конвертацию strtotime.
Filter: Содержимое:Дата, Date selection form element: Выбрать, Filter granularity: Месяц,
Оператор:Равно, Enter a relative date: date("m", strtotime("now"));
ничего не выводит, хотя в январе добавлено праздников.
и еще вопрос, как фильтер грануларити будет искать вначале в этом месяце, но больше и равно чем сегодня, потом больше чем этот месяц, а потом меньше чем месяц и потом меньше чем сегодня но в этом месяце - это получается много блоков придется делать.
Во-первых, фильтр гранулярити должен быть день. Во-вторых, оператор должен быть "Больше либо равно". Тогда никаких дополнительных блоков не надо. Вот только вопрос с годом остаётся открыт. Как вариант, назначить все праздники на текущий год и сделать небольшой модуль с хуком для крона, по которому каждый день праздник, у которого дата "вчера", будет сам переноситься на следующий год