Танцы с бубном вокруг модуля calendar

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

Аватар пользователя Irbis Irbis 26 августа 2008 в 16:42
Необходимо было вывести в блок календарь, по нажатию в блоке переводить пользователя не на выбранный день а на месяц в целом, темизовать всё дело.

Установил (скачал, скопировал, активировал). У своего материала создал дополнительное поле - дата. В Views активировал представление calendar, настроил адрес выдачи календаря, настроил у представления тип на мой тип материала и аргумент на моё дополнительное поле даты. У Calendar block - заменил название в описании блока для Администратора. Дальше пришлось применять хаки.

1. Что бы по нажатию на день производился переход на обзор статей за месяц в файле calendar-day.tpl.php (в папке theme, в корневой папке модуля) удаляем весь код и пишем:

<?php
  $text = $_SERVER['REQUEST_URI'];
  $text = substr($text,0,19);
  header('Location: http://мо-й--с-а-й-т.ru'.$text);
  exit();
?>

2. Что бы при отображении в ноде всего месяца осталась ссылка только на месяц и год, в файле calendar.module (в корневой папке модуля) в строке с 128 по 130 (удалил день и неделю):

function calendar_display_types() {
  return array('year' => t('Year'), 'month' => t('Month'));
}

3. Можно сделать подругому, что бы совсем убрать в заголовке в ноде, день - месяц - год, в файле calendar-main.tpl.php (в папке theme, в корневой папке модуля) необходимо удалить строку:

<?php if (empty($block)) print theme('links', $calendar_links);?>

А ссылку на год можно при этом получить вот так:

<?php
  $text = $_SERVER['REQUEST_URI'];
  $text = substr($text,0,16);
?>
<a href="<?php echo 'http://мо-й--с-а-й-т.ru'.$text; ?>"><?php $text = substr($text,12,4); echo $text; ?></a>

4. Темизаю делал используя шаблонизатор: скопировал node.tpl.php и переименовал в page-мой_адрес_страницы_для_календаря_настроенный_в_views.tpl.php. В данном файле внутри описал темизацию всего блока в котором у меня выводится блок календаря (сам блок по простому не темизовался с первого раза, а искать хуки было некогда). В этом же файле я подключил исправленную (темизованную) calendar.css для темизации css моего календаря.

Собственно два вопроса:

1. Что бы по нажатию на день производился переход на обзор статей за месяц нельзя сделать без хаканья calendar-day.tpl.php? А то я не нашёл.

2. Что бы при отображении в ноде всего месяца осталась ссылка только на месяц и год нельзя сделать без хаканья? Через темизацию Views, сделать не получилось.

Комментарии

Аватар пользователя Irbis Irbis 26 августа 2008 в 16:44

Извиняюсь, сначала выдало сервер недоступен, попробовал запостить ещё раз - оказалось уже добавлено.

Аватар пользователя dvorak dvorak 17 ноября 2010 в 20:46

Спасибо! Помогло! А как сделать что бы в заголовке node календаря вместо Week of Ноябрь 15 2010 --- Week of 15 Ноября 2010?

Аватар пользователя dvorak dvorak 17 ноября 2010 в 21:18

Нашел:
в файле theme.inc модуля date
менять следующий код (просто местами кодировку переставляем):

<?phpfunction theme_date_nav_title($granularity, $view, $link = FALSE, $format = NULL) {
  switch ($granularity) {
    case 'year':
      $title = $view->date_info->year;
      $date_arg = $view->date_info->year;
      break;
    case 'month':
      $format = !empty($format) ? $format : (empty($view->date_info->mini) ? 'F Y' : 'F');
      $title = date_format_date($view->date_info->min_date, 'custom', $format);
      $date_arg = $view->date_info->year .'-'. date_pad($view->date_info->month);
      break;
    case 'day':
      $format = !empty($format) ? $format : (empty($view->date_info->mini) ? 'l, F j Y' : 'l, F j');
      $title = date_format_date($view->date_info->min_date, 'custom', $format);
      $date_arg = $view->date_info->year .'-'. date_pad($view->date_info->month) .'-'. date_pad($view->date_info->day);
      break;
    case 'week':
        $format = !empty($format) ? $format : (empty($view->date_info->mini) ? 'j F Y' : 'j F');
      $title = t('Week of date', array('date' => date_format_date($view->date_info->min_date, 'custom', $format)));
        $date_arg = $view->date_info->year .'-W'. date_pad($view->date_info->week);
        break;
  }?>