Вырезаются первая и последняя недели (drupal 6.8 модуль archive)

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

Аватар пользователя iryston iryston 12 января 2009 в 11:39

Разрабатываю сайт на Друпал. Столкнулся с такой проблемой:
Перевел системные часы на февраль, хотел посмотреть появится ли стрелка для листания месяцев в блоке с календарем.
Посмотрел на сайт а в блоке который выводится модулем архив первая и последняя недели отсутствуют. Путем экспериментов выяснил, что проблема возникает только когда первое число месяца выпадает на воскресенье, а в настройках Drupal-а первым днем недели установлен понедельник.
В 2009 году такие глюки будут в феврале и в марте.

Кстати, возникшую недано проблему с отрицательными датами в календаре можно решить так:

// $num_days_prev = cal_days_in_month(CAL_GREGORIAN, $month-1, $year); // OLD
$num_days_prev = cal_days_in_month(CAL_GREGORIAN, $prev_month, $prev_year); // NEW

Закомментировать первую строчку и дописать под ней вторую в файле archive.module

P.S. Может кто знает, как вывести записи из категории за определенную дату сниппетом?

ВложениеРазмер
Иконка изображения arch-2009-02.gif3.31 КБ

Комментарии

Аватар пользователя Bios Bios 12 января 2009 в 12:39

Что то archive совсем плохо себя ведет...

Бог в помощь... Как только найду альтернативу перестану им пользоваться...

Аватар пользователя tech-life tech-life 4 марта 2009 в 23:53

Отлично! Нашел вопрос по той же самой проблеме! Второй месяц в архиве отсутствуют первая и последняя неделя. Пример http://techvesti.ru
А вот решения не нашел! Кстати, проблема с отрицательными датами я решал с помощью настроек CSS. Т.е. просто скрывал их цветом.

Аватар пользователя tech-life tech-life 5 марта 2009 в 0:33

Нашел решение

--- CODE/Drupal/calendar/archive/archive.module.orig    2009-02-01 22:47:28.000000000 +0200
+++ 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