Модуль Calendar : вместо сегодняшней даты - "сегодня"

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

Аватар пользователя esmer esmer 24 февраля 2015 в 2:08

Здравствуйте, друзья !
Использую модуль Calendar, чтобы отображать список родившихся исполнителей в тот или иной день. В модуле календарь есть предустановочные шаблоны во views, в том числе и шаблон upcoming events, когда события выводятся списком заголовком и датами. Не могу понять как сделать, чтобы вместо сегодняшней даты, допустим 24 февраля, было слово "сегодня". Можно ли это сделать во views ?

Комментарии

Аватар пользователя esmer esmer 24 апреля 2015 в 11:22

"ХулиGUN" wrote:
Варианты:
1. Скрыть поле с датой, добавить php поле, где сделать проверку на месяц и день с текущей даты и по условию выводить число или "сегодня"
2. Изменить шаблон необходимого поля во вьювсе, где так же сравнивать значения дат и выводить нужное по условию
3. Написать свой форматер для даты
4. темизировать вывод поля в template.php через theme_field()
Как мышкой накликать - я не знаю

Спасибо за ответ. Php к сожалению не знаю. Я думал что можно как то условие проверки в фильтрах views создать...

Аватар пользователя esmer esmer 25 апреля 2015 в 13:58

«2. Изменить шаблон необходимого поля во вьювсе, где так же сравнивать значения дат и выводить нужное по условию»

Как я понял это можно как-то сделать в фильтре. В шаблоне в фильтрах там стоит ">=now". Т.е. выводит с сегодняшней даты и далее. Пытался добавить группу фильтров чтобы была проверка = now, но запутался и/или и где подменять дату на слово.

Аватар пользователя esmer esmer 25 апреля 2015 в 17:13

ХулиGUN wrote:
"esmer" wrote:
Пытался добавить группу фильтров чтобы была проверка = now, но запутался и/или и где подменять дату на слово.

Это нужно не в фильтрах делать... а в самом поле/в шаблоне вывода поля/строки/в своём модуле. фильтры тут не при чём. Они рботают как и должны -фильтруют выборку по дате...

т.е. допустим в поле Содержимое: events ? А как же там условие задать ? Как я понимаю, перезаписать результаты, галка "заменить выводимое полем значение"...и подстановочные шаблоны с заголовком и содержимым.

Аватар пользователя esmer esmer 25 апреля 2015 в 19:35

ХулиGUN wrote:
"esmer" wrote:
т.е. допустим в поле Содержимое: events ? А как же там условие задать ? Как я понимаю, перезаписать результаты, галка "заменить выводимое полем значение"...и подстановочные шаблоны с заголовком и содержимым.

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

Спасибо. С php я пока не дружу, значит пока никак (.

Если вдруг кто найдет решение, поделитесь подробностями, модуль то популярный)

Аватар пользователя esmer esmer 1 марта 2017 в 17:34

Возвращаясь к старой нерешенной проблеме. В модуле календарь, есть upcoming block. Выводит он события вот в таком виде [img]http://storage8.static.itmages.com/i/17/0301/h_1488378827_3780256_eb13ed.... Сегодняшняя дата 1 марта. И я хочу чтобы вместо даты 1 марта было слово "Сегодня". Так как поля группируются во views в неформатированном списке, я использую для темизации шаблон views-view-list--events--block-2.tpl.php

В нем пишу [img]http://storage4.static.itmages.com/i/17/0301/h_1488378378_2218684_c3e349...

где view->result[0]->field_data_field_events_field_events_value как я выяснил через devel - это дата в виде: 2017-03-01 00:00:00, я ее сравниваю с текущей датой, если совпадает, то title (Это заголовок группирующего поля - заменить на слово "Сегодня"). В результате он все заголовки меняет на "сегодня".

[img]http://storage5.static.itmages.com/i/17/0301/h_1488378742_6866222_8199d4...

Подскажите, в чем может быть косяк? Почему не работает условие?

Аватар пользователя 3_14yavka 3_14yavka 2 марта 2017 в 14:50

Косяк в логике. При формировании каждого группирующегося по дате списка вы сравниваете текущую дату с датой ПЕРВОГО списка.

Аватар пользователя esmer esmer 2 марта 2017 в 17:32

Попробовал через foreach

<?php    
dpm
($view);
    
$date=date("Y-m-d 00:00:00");
    foreach (
$view->result as $id => $today) :
    if (
$today == $date) : $title 'Cегодня'
    endif;
    
    endforeach;
    print 
$title;?>

Не срабатывает. Рисует даты.

Аватар пользователя esmer esmer 2 марта 2017 в 19:33

Логичнее вот так:

<?php
$date
=date("Y-m-d 00:00:00");
    
dpm($view);
    foreach (
$view->result as $val) :
    
$today=$val->field_data_field_events_field_events_value
    if (
$today == $date) : $title 'Cегодня'
    endif;
    
    endforeach;
    
    print 
$title;
?>

Но тоже мимо...

Аватар пользователя esmer esmer 3 марта 2017 в 0:39

Тут еще какой момент, $title - Это вывод групирующего поля даты: 3 марта, 4 марта, 5 марта, 6 марта а под ним события к этой дате. Всего 10 событий на выходе. Так вот devel выводит сколько дат столько он и повторяет выводов. Притом запрос dpm не в цикле.
krumo

И в каждом выводе по 10 событий devel

И уже в каждом событии уже дата:

дата

Получается в каждом из 4 выводов (группировки поля) он начинает проверять с первой события сегодняшней даты. Может быть поэтому на каждую группировку он пишет "сегодня" ?

Как пофиксить можно это?