в модуле вывожу свой вьюс вот так:
function user_content_tab_page( $uid ){
$view = views_get_view('tracker');
$display_id='page_1';
$view->set_display($display_id);
return $view->execute_display($display_id, array($uid));
}
$view = views_get_view('tracker');
$display_id='page_1';
$view->set_display($display_id);
return $view->execute_display($display_id, array($uid));
}
вьюха без фильтров, как мне тут программно добавить фильтр по записям типа blog?
Комментарии
Как тут быть с фильтрами точно не скажу, надо ковырять API, но расскажу про существование такой замечательной функции как views_embed_view(). Но там правда можно указывать только аргументы, что по сути те же фильтры только в профиль. http://drupalcontrib.org/api/function/views_embed_view/6
Исходя из логики фильтров... если они не exposed, его и задать нельзя, никак. Потому действительно аргумент подойдет здесь вполне, Validation -> Node Id from URL -> Node Type: Article допустим и потом просто закинуть аргумент.
дело в том что аргументом передается uid и нужно просматривающему ноду пользователю показывать все типы нод если это админ и только блоги если обычный пользователь
нашел, вот так добавляется фильтр на материалы типа блог:
'operator' => 'in',
'value' => array(
'blog' => 'blog',
),
'group' => '0',
'exposed' => FALSE,
'expose' => array(
'operator' => FALSE,
'label' => '',
),
);
$view->add_item($display_id, 'filter', 'node', 'type', $options);
Ставите первым агрументом во вьюс тип ноды. Дальше:
<?php
/**
* VIEW_NAME - имя вьюса
* VIEW_PAGE - страница вьюса, например default, page_1, page_2, block_1. По умолчанию default
*/
$arg = ($uid == 1) ? 'all' : 'blog';
return views_embed_view(VIEW_NAME, VIEW_PAGE, $arg);
?>
Все.
ну да, просто хотелось разобраться именно с тем способом