You are hereБлоги / Ёж's blog / Views - работа с аргументами

Views - работа с аргументами


Ёж 25 March 2009

Views - работа с аргументами

В этой статье я продолжу рассказывать о модуле Views - одном из самых замечательных модулей Друпала, благодаря которым эту СMS можно рассматривать как самого настоящего крутого ниндзя. Более подробно остановлюсь на работе с аргументами Views, а точнее просто покажу практический пример работы - что как известно всегда лучше любых слов и теоретических изысканий.

Так вот - мне пришлось делать вид, в котором нужно было сделать переход по датам. Вид показывает все записи относящиеся к такой-то дате, а внизу есть две ссылки - одна ведёт на следующее число, а другая на предыдущее от исходной. Дата в формате ММ-ДД-ГГГГ. Если кому непонятно - внизу рисунок.

Понятно, что такую листалку можно делать только через аргументы. Но моя задача усложнялась ещё и тем, что в фиксированном формате была только дата, а кроме даты там же администратор по ТЗ мог указывать и время - например 03-25-2009 12:23. И все эти записи нужно было отображать в моём виде. Только записи по конкретной дате.

Итак - добавляете в качестве аргумента то поле, в котором у Вас и содержится дата (например, у меня дата указывалась в заголовке комментария). Соответственно в аргументе и будет передаваться Ваша дата. Но как сделать, чтоб можно было включить туда все записи - не только те, которые имеют жёсткий фиксированный формат ММ-ДД-ГГГГ.

В итоге мне помог режим глоссария. Или же словарный режим - как кому больше нравится. Дело в том, что в настройках аргумента этот режим применяется для ограничения числа символов, используемых в аргументе. Причём - символами могут выступать как буквы, так и цифры. Таким образом в настройках аргумента я поставил птичку напротив надписи словарный режим - и поставил десятку - ведь дата в формате ММ-ДД-ГГГГ - это как раз десять символов. Ну и в базовых настройках я выбрал ПОКАЗАТЬ ВСЕ ЗНАЧЕНИЯ.

Всё - теперь в мой вид попадают и значения 03-25-2009 и 03-25-2009 12:23, и так далее. Точно так же можно показывать даты по месяцам - поставить 2 вместо десяти в поле ограничения символов, и тогда вид будет показан только по двум первым цифрам, то есть можно группировать записи по месяцам. И так далее - возможности на самом деле безграничны.

Ну, теперь осталось сделать саму листалку - для этого в основных настройках вида я использовал поле Подвал (Footer) и вводил туда свой код. Я использовал функцию для даты mktime(). Можно также использовать strtotime(). Или работать с преобразовыванием даты в формат JDC. Способов на самом деле масса - благо и функций для работы с датами в PHP немало:

<?php
$view
= views_get_current_view(); // Получаем доступ к текущему виду

if(!count($view->args))
  return
''; // Если нету ни одного аргумента, ничего не выводим

$date1=explode("-",$view->args[0]); // Записываем дату из нашего аргумента в переменную $date1

$yesterday = mktime (0,0,0,$date1[0] ,$date1[1]-1,$date1[2]);// Вчера
$tomorrow = mktime (0,0,0,$date1[0],$date1[1]+1,$date1[2]);// Завтра

$before = l('Предыдущий день <<', 'all/'.date("m-d-Y",$yesterday));
$after = l('Следующий день >>', 'all/'.date("m-d-Y",$tomorrow));

// Формируем ссылки и выводим их оператором return

return "<p>$before</p><p>$after</p>";
?>

Всё. Сохраняем изменения - наша задача выполнена :)

Ёж

]]>]]>
ССылки

RSS-материал