views2 - аргумент date

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

Аватар пользователя sindeev sindeev 14 января 2009 в 18:36

Доброго времени суток. Не могу понять как сделать выборку по последнему месяцу типа ноды...

Есть тип ноды НОВОСТЬ
У нее есть поле filed_date типа Date
настроен аргумент у постраничного вывода на эту дату с детализацией по месяцу, по дефолту стоит текущая дата.
Допустим последние новости в декабре, а сейчас уже январь и вылезает пустая страница при отображении без явного указания аргумента.
Как сделать чтобы был последний существующий месяц?

Пробовал PHP-Code, что-то у меня вообще ничего не получилось, может я его не правильно писал конечно...

Помогите пожалуйста, уже весь мозг сломал...

Комментарии

Аватар пользователя sindeev sindeev 15 января 2009 в 13:54

пробовал ставить фиксированную запись. Он выдает пустой текст.
Т.е. пишу 2008-12
А он говорит что SQL запрос пустой...

Блин, вроде такая элементарная вещь, а бьюсь уже 3-й день Sad

Если поставить "Текущая дата" - то он делает выборку нормально... НО за этот месяц нет новостей... и получается что страничка пустая...

Аватар пользователя HIgor1968 HIgor1968 15 января 2009 в 19:49

Сравнивай не даты а год и месяц, преобразовав текущюю дату и дату материала функцией DATE.
Или же отбирай даты в диапазоне
начало месяца >= дата материала < начало сл. месяца

Аватар пользователя sindeev sindeev 15 января 2009 в 20:57

задам вопрос по-другому Smile
что мне написать в PHP-Code значения по-умолчанию, чтобы отобразить новости за Декабрь 2008 года?..

заранее спасибо за ответ.

Аватар пользователя HIgor1968 HIgor1968 16 января 2009 в 14:40

Если использовать не свое поле, а дату создания новости (которую кстати можно менять при создании материала). То без PHP год и месяц новости задаются в агрументе строкой типа 200812.

Аватар пользователя HIgor1968 HIgor1968 16 января 2009 в 14:48

Если дату создания хочешь сохранить неизменной, то можно пойти от обратного - сделать для нее свое поле, скрытое.

Аватар пользователя magway magway 16 января 2009 в 20:22

Есть ощущение, что где-то в модуле Date ошибочка. При передаче аргумента из php-кода, валидатор не получает значение, что бы ему не передавали. При передаче из строки адреса или из Fixed entry все нормально. Тогда как php-код не обрабатывается. Бегло посмотрел исходники - ничего не нашел, надо подробней смотреть Wink Поэтому, на Вашем месте, я бы использовал дату создания ноды, как и предлагают выше.

Аватар пользователя HIgor1968 HIgor1968 17 января 2009 в 13:45

Действительно полгода назад я тоже пытался использовать модуль, но потом какие-то косяки пошли с модулем. Я плюнул и просто от него отказался, тем более что обходные пути нашел. Плохая потдержка у модуля.

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 17 января 2009 в 17:36

У views с полями даты вообще проблемы, на мой взгляд. Я тоже бился над решением некоторых своих задач, но через views этого сделать не сумел. Да и granularity дат с привязкой от большего к меньшему как-то «не катит».

Я правильно понимаю, что вы пробуете пользоваться такой опцией, как «действие при незаданном аргументе»? Попробуйте указать

$abc="123456";
return $abc

Только замените 123456 на дату размещения последней из имеющихся у вас новостей в том же формате, в котором их кушает Ваш views.

Аватар пользователя magway magway 17 января 2009 в 17:42

В том то и дело, что при передаче аргумента из php-кода, views ничего не кушает.
http://example.com/view/2009-01 - работает;
http://example.com/view - при настройке Fixed Entry 2009-01 - работает;
http://example.com/view - при наличии PHP-кода return '2009-01' - не работает.