Фильтрация по умолчанию для views

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

Аватар пользователя adry adry 20 февраля 2008 в 0:10

Здравствуйте. Проблема следующая. Сделал ленту новостей: настроил вывод нод нужного типа с помощью модуля views. Так же с помощью этого модуля делаю возможность фильтрации новостей по годам (на странице ссылки справа). Для этого использую возможности аргументов (модуля views). Здесь все оказалось не ожиданно просто: в урле добавляю год, в аргументах выбрал "Материал: Год публикации" с его не сложными настройками.

С одним не могу разобраться. Как с помощью этого модуля (views) заставить по умолчанию фильтроваться новости по последнему году. Сейчас лента никак не фильтруется и по умолчанию выводятся все новости. У аргумента "Материал: Год публикации" есть опция "По умолчанию", но дня нее почему-то нет весьма ожидаемой в таком случае возможности указать какое-то значение аргумента (для фильтрации по-умолчанию).

Пытался разбираться с применением php для аргументов (секция "Аргументы обработки кода"). Не получилось. Чего-то дебри там уже. Документация не сильно помогла.

Может кто знает?

Комментарии

Аватар пользователя neochief neochief 20 февраля 2008 в 3:04

Вставьте это в Argument Handling Code.

if (!$args[0]) {
  $args[0] = 2006; // ваш год
}
return $args;

А вообще, там ссылка есть на помощь, первый же пример Smile

Аватар пользователя adry adry 20 февраля 2008 в 14:39

neochief - спасибо Вам! Код рабочий — у меня все получилось.
Действительно в документации это есть в первом примере (http://drupal.org/node/70145). Почему-то слона я не заметил.

Сейчас данный вопрос решен.

P.S. На всякий случай вот мой экспорт views:)

$view = new stdClass();
$view->name = 'news';
$view->description = 'Новости';
$view->access = array (
);
$view->view_args_php = 'if (!$args[0]) {
$args[0] = 2008;
}
return $args;

';
$view->page = TRUE;
$view->page_title = 'Новости';
$view->page_header = '';
$view->page_header_format = '1';
$view->page_footer = '';
$view->page_footer_format = '1';
$view->page_empty = '';
$view->page_empty_format = '1';
$view->page_type = 'teaser';
$view->url = 'about/news';
$view->use_pager = TRUE;
$view->nodes_per_page = '100';
$view->sort = array (
array (
'tablename' => 'node',
'field' => 'created',
'sortorder' => 'DESC',
'options' => 'normal',
),
);
$view->argument = array (
array (
'type' => 'year',
'argdefault' => '2',
'title' => 'Новости за %1',
'options' => '',
'wildcard' => '',
'wildcard_substitution' => '',
),
);
$view->field = array (
);
$view->filter = array (
array (
'tablename' => 'node',
'field' => 'type',
'operator' => 'OR',
'options' => '',
'value' => array (
0 => 'news',
),
),
);
$view->exposed_filter = array (
);
$view->requires = array(node);
$views[$view->name] = $view;