Нужно убрать ссылки в календаре

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

Аватар пользователя Беленькая Беленькая 4 июня 2010 в 18:45

Я установила модули calendar, date. Мне нужно, чтобы на сайте просто отображался календарик с текущим месяцем и обозначена сегодняшняя дата. Но в блоке календаря каждый день является ссылкой на ноду. Я не знаю как убрать эти ссылки. Может кто-то подскажет, что мне сделать?

Комментарии

Аватар пользователя wolverine wolverine 5 июня 2010 в 16:59

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

Аватар пользователя Arturus Arturus 7 июня 2010 в 14:08

в папке модуля ищем файл /theme/theme.inc
ищем блок
Create the calendar date box

функция
template_preprocess_calendar_datebox

код функции

<?php
  $vars
['day'] = intval(substr($date82));
  
$force_view_url = !empty($view->date_info->block) ? TRUE FALSE;
  
$vars['url'] = date_real_url($viewNULL$date$force_view_url);
  
$vars['link'] = l($vars['day'], $vars['url']);
  
$vars['granularity'] = $view->date_info->granularity;
  
$vars['mini'] = $view->date_info->mini;
  
  if (
$view->date_info->mini) {
    if (!empty(
$vars['selected'])) {
      
$vars['class'] = 'mini-day-on';
    }
    else {
      
$vars['class'] = 'mini-day-off';
    }
  }
  else {
    
$vars['class'] = 'day';
  }

?>

меняем на

<?php
  $vars
['day'] = intval(substr($date82));
  
$force_view_url = !empty($view->date_info->block) ? TRUE FALSE;
  
$vars['url'] = date_real_url($viewNULL$date$force_view_url);
  
$vars['granularity'] = $view->date_info->granularity;
  
$vars['mini'] = $view->date_info->mini;
  
  if (
$view->date_info->mini) {
    if (!empty(
$vars['selected'])) {
      
$vars['class'] = 'mini-day-on';
      
$vars['link'] = l($vars['day'], $vars['url']);
    }
    else {
      
$vars['class'] = 'mini-day-off';
      
$vars['link'] = '';
    }
  }
  else {
    
$vars['class'] = 'day';
  }

?>

все, если по дате есть материалы, ссылки будут активными, если нет, ссылки неактивны.

Аватар пользователя Беленькая Беленькая 8 июня 2010 в 10:06

Большое спасибо, но так не получилось.
Та м получается, что даты на которые нет событий вообще не выводятся.

Мне в принципе вообще там ссылки не нужны, событий не будет, просто визуальный календарь с отметкой сегодняшнего дня.

Я пыталась в этом коде еще кое-что менять. Но тогда у меня с каждой даты была ссылка на главную.

Как же сделать? Не хочется ставить другой модуль

Аватар пользователя Arturus Arturus 9 июня 2010 в 11:40

попробуйте заменить строку из вышепреведенного кода

<?php
 $vars
['link'] = '';
?>

на строку

<?php
 $vars
['link'] = l($vars['day'], '');
?>

или

<?php
 $vars
['link'] = $vars['day'];
?>

p.s. не помню как точно, но у меня получалось вывести как Вам надо.

Аватар пользователя Беленькая Беленькая 28 июля 2010 в 15:40

Вобщем, решение такое, вот код код

<?php
/**
 * Create the calendar date box.
 */
function template_preprocess_calendar_datebox(&$vars) {
  
$date $vars['date'];
  
$view $vars['view'];
  
  
$vars['day'] = intval(substr($date82));
  
$force_view_url = !empty($view->date_info->block) ? TRUE FALSE;
  
$vars['url'] = date_real_url($viewNULL$date$force_view_url);
  
$vars['link'] = l($vars['day'], $vars['url']);
  
$vars['granularity'] = $view->date_info->granularity;
  
$vars['mini'] = $view->date_info->mini;
  
  if (
$view->date_info->mini) {
    if (!empty(
$vars['selected'])) {
      
$vars['class'] = 'mini-day-on';
    }
    else {
      
$vars['class'] = 'mini-day-off';
      
//$vars['link'] = l($vars['day'], '');
      
$vars['link'] = $vars['day'];
    }
  }
  else {
    
$vars['class'] = 'day';
  }
}
?>

[РЕШЕНО]