Я установила модули calendar, date. Мне нужно, чтобы на сайте просто отображался календарик с текущим месяцем и обозначена сегодняшняя дата. Но в блоке календаря каждый день является ссылкой на ноду. Я не знаю как убрать эти ссылки. Может кто-то подскажет, что мне сделать?
Комментарии
Можно отредактировать модуль, который вы поставили, но это не очень хороший способ тк при обновлении все изменения пропадут. Проще наверно найти php код календаря, создать блок, вставить туда этот код с фильтром php и вывести этот блок где хотите.
в папке модуля ищем файл /theme/theme.inc
ищем блок
Create the calendar date box
функция
template_preprocess_calendar_datebox
код функции
<?php
$vars['day'] = intval(substr($date, 8, 2));
$force_view_url = !empty($view->date_info->block) ? TRUE : FALSE;
$vars['url'] = date_real_url($view, NULL, $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($date, 8, 2));
$force_view_url = !empty($view->date_info->block) ? TRUE : FALSE;
$vars['url'] = date_real_url($view, NULL, $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';
} ?>
все, если по дате есть материалы, ссылки будут активными, если нет, ссылки неактивны.
Большое спасибо, но так не получилось.
Та м получается, что даты на которые нет событий вообще не выводятся.
Мне в принципе вообще там ссылки не нужны, событий не будет, просто визуальный календарь с отметкой сегодняшнего дня.
Я пыталась в этом коде еще кое-что менять. Но тогда у меня с каждой даты была ссылка на главную.
Как же сделать? Не хочется ставить другой модуль
использовать archive вместо calendar
попробуйте заменить строку из вышепреведенного кода
<?php
$vars['link'] = '';
?>
на строку
<?php
$vars['link'] = l($vars['day'], '');
?>
или
<?php
$vars['link'] = $vars['day'];
?>
p.s. не помню как точно, но у меня получалось вывести как Вам надо.
Вобщем, решение такое, вот код код
<?php
/**
* Create the calendar date box.
*/
function template_preprocess_calendar_datebox(&$vars) {
$date = $vars['date'];
$view = $vars['view'];
$vars['day'] = intval(substr($date, 8, 2));
$force_view_url = !empty($view->date_info->block) ? TRUE : FALSE;
$vars['url'] = date_real_url($view, NULL, $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';
}
}
?>
[РЕШЕНО]