Как организовать календарь праздников
Прислано: dennis60
вт, 31/08/2010 - 13:17
Ищу решение одной задачи, может кто подскажет.
Есть страницы с описанием праздников. Хотелось бы создать календарь, в котором на датах были ссылки на соответствующие страницы праздников. Но вот в чем проблема!
В России много праздников и, к большому моему сожалению, которые не имеют определенной даты. Не буду приводить в пример вычисления даты пасхи (кому интересно, тот может изучить вычисление, предложенное немецким математиком Карлом Гауссом), а вот День Военно-Морского Флота приведу. Празднуется он в последнее воскресение июля каждого года.
Вариант создания поля даты и изменения его вручную ежегодно не хотелось бы реализовывать.:) Может кто предложит какое-нибудь эстетичное решение….
- dennis60's blog
- Для комментирования войдите или зарегистрируйтесь
Согласен, нетривиальная задача. Могу предложить немного извращенский вариант:
сделать cck поле, в которое записывается php-код с формулой, селектить все праздники, проходиться по ним и выполнять код. Те которые вернули true выводить.
- Для комментирования войдите или зарегистрируйтесь
ну а в чем проблема, надо просто для каждого праздника хранить eval-php код который будет дату вычислять. естественно вычислять и кешировать до следующего года. если нужен модуль - могу написать.
- Для комментирования войдите или зарегистрируйтесь
ну а в чем проблема, надо просто для каждого праздника хранить eval-php код который будет дату вычислять. естественно вычислять и кешировать до следующего года. если нужен модуль - могу написать.
Кстате да, как вариант - написать модуль который будет раз в год по крону evalить сохраненный код, и вычисленную дату записывать в cck поле. А потом выводить через views. Amrite?
- Для комментирования войдите или зарегистрируйтесь
Мысль на счет CKK поля у меня была. Только вот какая проблема – все ограничивается одним годом, так как поле одно. Если сегодня День Военно-Морского флота и человек хочет посмотреть какого числа этот праздник будет в следующем году, то ему нужно будет потерпеть пока это поле не пересчитается.
Кстате да, как вариант - написать модуль который будет раз в год по крону evalить сохраненный код, и вычисленную дату записывать в cck поле. А потом выводить через views. Amrite?
Этот модуль придется запускать намного чаще. Если раз в год, то есть будет актуален текущий год, то человек в декабре не сможет найти информацию о предстоящем Рождестве, так как оно будет в следующем году.
- Для комментирования войдите или зарегистрируйтесь
Согласен, нетривиальная задача. Могу предложить немного извращенский вариант:
сделать cck поле, в которое записывается php-код с формулой, селектить все праздники, проходиться по ним и выполнять код. Те которые вернули true выводить.
Я так понимаю, что тут речь идет о модулях Views и CCK. Но чтобы вывести выборку при помощи Views в виде календаря необходимо поле формата Date. А где его взять? В данном случае есть только формула, которая выводит true, если праздник попадает в указанный период.
- Для комментирования войдите или зарегистрируйтесь
кстати есть php custom field для вьюх (кажется так называется), можно в него пихнуть php
- Для комментирования войдите или зарегистрируйтесь
Этот модуль придется запускать намного чаще. Если раз в год, то есть будет актуален текущий год, то человек в декабре не сможет найти информацию о предстоящем Рождестве, так как оно будет в следующем году.
ну хорошо 95% будет смотреть закешированный вариант, а остальные будут изредка открывать и смотреть на слудеющий/предыдущий год. поэтому на вход надо подавать номер года, а на выход - либо из кеша либо пересчитывать..
хотя зависит от количества дат. в любом случае php узким местом не бывает обычно
- Для комментирования войдите или зарегистрируйтесь
кстати есть php custom field для вьюх (кажется так называется), можно в него пихнуть php
Но чтобы Views выводить в виде календаря нужна ведь дата, по которой календарь будет формироваться? А где ее в этом случае брать?
- Для комментирования войдите или зарегистрируйтесь
чето по-моему кто-то больно много думает, проще надо быть, ну вот на кой ляд мне смотреть когда будет пасха через год, интересно что что будет сегодня и что будет в выходные.... а когда там пасха 2029 году....
- Для комментирования войдите или зарегистрируйтесь
Кстате, автору советую посмотреть модуль Date (Date Repeating API). Там можно задавать по довольно сложным правилам повторение дат (например "Следующий день после последнего понедельника Мая и Апреля если это числа с 3 по 21 число").
- Для комментирования войдите или зарегистрируйтесь
Кстате, автору советую посмотреть модуль Date (Date Repeating API). Там можно задавать по довольно сложным правилам повторение дат (например "Следующий день после последнего понедельника Мая и Апреля если это числа с 3 по 21 число").
Спасибо всем за участие. Модуль посмотрю. :)
- Для комментирования войдите или зарегистрируйтесь



Комментарии