Как организовать календарь праздников

Прислано: dennis60

вт, 31/08/2010 - 13:17

Ищу решение одной задачи, может кто подскажет.

Есть страницы с описанием праздников. Хотелось бы создать календарь, в котором на датах были ссылки на соответствующие страницы праздников. Но вот в чем проблема!
В России много праздников и, к большому моему сожалению, которые не имеют определенной даты. Не буду приводить в пример вычисления даты пасхи (кому интересно, тот может изучить вычисление, предложенное немецким математиком Карлом Гауссом), а вот День Военно-Морского Флота приведу. Празднуется он в последнее воскресение июля каждого года.
Вариант создания поля даты и изменения его вручную ежегодно не хотелось бы реализовывать.:) Может кто предложит какое-нибудь эстетичное решение….

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано t3hk0d3 в вт, 31/08/2010 - 14:38.

Согласен, нетривиальная задача. Могу предложить немного извращенский вариант:
сделать cck поле, в которое записывается php-код с формулой, селектить все праздники, проходиться по ним и выполнять код. Те которые вернули true выводить.


Опубликовано orangeudav в вт, 31/08/2010 - 14:43.

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


Опубликовано t3hk0d3 в вт, 31/08/2010 - 16:24.

orangeudav написал(а):

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

Кстате да, как вариант - написать модуль который будет раз в год по крону evalить сохраненный код, и вычисленную дату записывать в cck поле. А потом выводить через views. Amrite?


Опубликовано dennis60 в вт, 31/08/2010 - 20:09.

Мысль на счет CKK поля у меня была. Только вот какая проблема – все ограничивается одним годом, так как поле одно. Если сегодня День Военно-Морского флота и человек хочет посмотреть какого числа этот праздник будет в следующем году, то ему нужно будет потерпеть пока это поле не пересчитается.

"t3hk0d3" написал(а):

Кстате да, как вариант - написать модуль который будет раз в год по крону evalить сохраненный код, и вычисленную дату записывать в cck поле. А потом выводить через views. Amrite?

Этот модуль придется запускать намного чаще. Если раз в год, то есть будет актуален текущий год, то человек в декабре не сможет найти информацию о предстоящем Рождестве, так как оно будет в следующем году.


Опубликовано dennis60 в вт, 31/08/2010 - 20:09.

"t3hk0d3" написал(а):

Согласен, нетривиальная задача. Могу предложить немного извращенский вариант:
сделать cck поле, в которое записывается php-код с формулой, селектить все праздники, проходиться по ним и выполнять код. Те которые вернули true выводить.

Я так понимаю, что тут речь идет о модулях Views и CCK. Но чтобы вывести выборку при помощи Views в виде календаря необходимо поле формата Date. А где его взять? В данном случае есть только формула, которая выводит true, если праздник попадает в указанный период.


Опубликовано orangeudav в вт, 31/08/2010 - 20:15.

кстати есть php custom field для вьюх (кажется так называется), можно в него пихнуть php


Опубликовано orangeudav в вт, 31/08/2010 - 20:18.

"dennis60" написал(а):

Этот модуль придется запускать намного чаще. Если раз в год, то есть будет актуален текущий год, то человек в декабре не сможет найти информацию о предстоящем Рождестве, так как оно будет в следующем году.

ну хорошо 95% будет смотреть закешированный вариант, а остальные будут изредка открывать и смотреть на слудеющий/предыдущий год. поэтому на вход надо подавать номер года, а на выход - либо из кеша либо пересчитывать..

хотя зависит от количества дат. в любом случае php узким местом не бывает обычно


Опубликовано dennis60 в вт, 31/08/2010 - 20:50.

"orangeudav" написал(а):

кстати есть php custom field для вьюх (кажется так называется), можно в него пихнуть php

Но чтобы Views выводить в виде календаря нужна ведь дата, по которой календарь будет формироваться? А где ее в этом случае брать?


Опубликовано mak-vardugin в вт, 31/08/2010 - 20:58.

чето по-моему кто-то больно много думает, проще надо быть, ну вот на кой ляд мне смотреть когда будет пасха через год, интересно что что будет сегодня и что будет в выходные.... а когда там пасха 2029 году....


Опубликовано t3hk0d3 в ср, 01/09/2010 - 13:52.

Кстате, автору советую посмотреть модуль Date (Date Repeating API). Там можно задавать по довольно сложным правилам повторение дат (например "Следующий день после последнего понедельника Мая и Апреля если это числа с 3 по 21 число").


Опубликовано dennis60 в чт, 02/09/2010 - 05:30.

"t3hk0d3" написал(а):

Кстате, автору советую посмотреть модуль Date (Date Repeating API). Там можно задавать по довольно сложным правилам повторение дат (например "Следующий день после последнего понедельника Мая и Апреля если это числа с 3 по 21 число").

Спасибо всем за участие. Модуль посмотрю. :)


Новое на сайте

Ссылки партнёров