Разрабатываю сайт на Друпал. Столкнулся с такой проблемой:
Перевел системные часы на февраль, хотел посмотреть появится ли стрелка для листания месяцев в блоке с календарем.
Посмотрел на сайт а в блоке который выводится модулем архив первая и последняя недели отсутствуют. Путем экспериментов выяснил, что проблема возникает только когда первое число месяца выпадает на воскресенье, а в настройках Drupal-а первым днем недели установлен понедельник.
В 2009 году такие глюки будут в феврале и в марте.
Кстати, возникшую недано проблему с отрицательными датами в календаре можно решить так:
$num_days_prev = cal_days_in_month(CAL_GREGORIAN, $prev_month, $prev_year); // NEW
Закомментировать первую строчку и дописать под ней вторую в файле archive.module
P.S. Может кто знает, как вывести записи из категории за определенную дату сниппетом?
Вложение | Размер |
---|---|
arch-2009-02.gif | 3.31 КБ |
Комментарии
Что то archive совсем плохо себя ведет...
Бог в помощь... Как только найду альтернативу перестану им пользоваться...
Отлично! Нашел вопрос по той же самой проблеме! Второй месяц в архиве отсутствуют первая и последняя неделя. Пример http://techvesti.ru
А вот решения не нашел! Кстати, проблема с отрицательными датами я решал с помощью настроек CSS. Т.е. просто скрывал их цветом.
Нашел решение
+++ CODE/Drupal/calendar/archive/archive.module 2009-02-01 22:51:31.000000000 +0200
@@ -127,7 +127,10 @@ function theme_archive_block_calendar($t
// Grab the first day of the month using the user's timezone
list($start_year, $start_month) = explode(' ', format_date($timestamp, 'custom', 'Y m'));
$start = gmmktime( 0, 0, 0, (int)$start_month, 1, (int)$start_year);
- $weekday = gmdate('w', $start) - $first_day_of_week;
+ $weekday = gmdate('w', $start);
+ if( $first_day_of_week ) {
+ $weekday = ($weekday?$weekday:7) - $first_day_of_week;
+ }
$days_row = array();
// From http://www.theadminzone.com/forums/showthread.php?t=17490
http://drupal.org/node/357191
для тех кто в танке.
у archive есть функция темизации которую в СВОЕЙ теме надо перерисовать так как ВАМ нужно.
не надо лезть внутрь модуля
разобрался, вопрос снимаю.