Очередная проблема. Помогите плиз.
В определенном типе контента есть CCK поле типа Date.
Во-первых, хотелось бы сохранять в это поле дату без учета года. Ну это, я так понимаю можно организовать просто указав формат даты "d.m" .
Во-вторых, нужно создать выборку views calendar где на текущий день отображались бы все события этого дня, но без привязки к текущему году. При клике по месяцу - выборка всех событий, например в марте.
Объясню для чего это нужно, чтобы было понятнее что нужно. Это календарь праздников. Каждый год одни и те же праздники, так что хотелось бы чтобы они повторялись ежегодно.
Спасибо заранее !
Комментарии
незнаю какие праздники, но вот обычные "Праздники" должны сохранятся в несколько полей (d.m, дата начала/конца, количественный, дни пропуска, продолжительность и т.д.), php-обработчик аргумента даты в Views нужно писать, ибо вот вам нюансы:
1. Иногда праздники начинаются с какого-то или кончаются каким-то числом. Клиент откроет 1980-й год и офигеет от "дня России или единства"
2. Есть праздники, как пасха (лунно-солнечный), есть считающиеся по дням месяца, года (день программиста), они не будут поддаватсья вашей d.m
3. ну и т.д.
яб не заморачивался, а доставал праздники с уже работающих сайтов
Нет так сделать нельзя. Год все равно сохранится. Используя d.m. можно, только убрать его из отображения на ноде.
Может в вашем случае лучше сделать два текстовых поля один для дня , другой для месяца. Потом через views их можно фильтровать. Но вообще правильно, праздники, есть с плавающими датами, без года тут не обойтись.
В принципе вы все правильно говорите - есть плавающие праздники, но в данном конкретном случае нужны только фиксированные даты не привязанные к году.
Да, это я в курсе - если не ошибаюсь, то везде будет 79-й год. Но ведь если год везде будет 79-й, то это все равно, что год не учитывается.
А вот так я, наверное, и сделаю:
Очень просто, но в то же время эффективно... попробую к этим двум полям еще и datepicker прикрутить и вообще будет супер.
Так, создал два поля, datepick'еры прикрутил, осталось только views'ы создать. Вроде не должно быть трудно
Так, ну вроде получилось:
Теперь очередной вопрос ! Даже два вопроса !
1) Вывожу-то я с помощью views два числовых поля day и month в формате "dd / mm" , а вот как мне в том же вью вывести название месяца ??? Можно ли где-то переопределить вывод поля месяца, чтобы он выводился через функцию php, типа вот такого чтоли: date('F', mktime(0,0,0,1,arg(1),0))... или КАК и ГДЕ это можно сделать ???
2) Можно ли все это и самое главное КАК (?) привязать к стилю отображения calendar ?? Просто очень хотелось бы на календарике в сайдбаре отмечать праздничные дни.
без php-кода не обойдешься:
1. в header Views считай arg(позиция_месяца_в_url) и печатай по date.
2. темизируй ячейки календаря (кликни на Information, увидишь файлы тематизации), запрашивай есть сегодня праздник или печатай...
Ага, все понял, нашел, осталось только реализовать ! Попробую разобраться с этим. Спасибо !
Создайте вычисляемое поле. В нем пред-обсчитывайте то, что не регулярно происходит(как месяцдень), а что регулярно вычисляйте как месяцдень от поля date.
Ммм... что-то я не пойму, как вычисляемые поля CCK помогут мне с выборками Views ? В принципе с самой выборкой может и поможет, но результат, на сколько я понимаю будет тот же, что и при предыдущей реализации с помощью двух отдельных текстовых полей. А вот вопрос с отмечанием этих дней в календаре по-моему никак не решается. Если я не прав - поправте
В принципе уже реализовал так как выше описал - с помощью двух числовых полей - месяц и год. К ним прикрутил popup календарик. Но все же не получилось прикрутить календарь в сайдбаре с отмеченными на нем событиями, так что стоит попробовать с помощью вычисляемых полей... В принципе я с вычисляемыми полями пока не работал, так что любые подсказки и советы приветствуются ! Спасибо !
что-то у меня не выходит... аналогичная проблема, может кто подскажет верные пути решения?
<?php
if (!$node->nid) node_save($node);
$out = 10000 + date('d', strtotime($node->field_date_live[0]['value'])) * 100 + date('m', strtotime($node->field_date_live[0]['value']));
$node_field[0]['value'] = $out;
?>
а куда это вставлять?)))))
Так куда это вставлять?)))
у меня немного другая проблема
есть выборка по году и месяцу
но почему то фильтр по дате работает только как "И", а "ИЛИ" не работает (точнее работает также как "И")
вообщем надо както реализовать выборку с логикой "И-ИЛИ", чтобы:
- при выборе года показывались все документы соответствующие этому году
- при выборе месяца показывались все документы соответствующие этому месяцу
- при выборе года и месяца показывались все документы соответствующие месяцу этого года
а сейчас при выборе года документы не показываются вообще, при выборе месяца отображаются все документы, и только про одновременном выборе месяца и года работает как надо
чем закончилось дело?