[РЕШЕНО] Фильтры views программно

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

Аватар пользователя FORTIS FORTIS 2 июля 2010 в 23:58

в модуле вывожу свой вьюс вот так:

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));
}

вьюха без фильтров, как мне тут программно добавить фильтр по записям типа blog?

Комментарии

Аватар пользователя vgoodvin vgoodvin 3 июля 2010 в 0:06

Как тут быть с фильтрами точно не скажу, надо ковырять API, но расскажу про существование такой замечательной функции как views_embed_view(). Но там правда можно указывать только аргументы, что по сути те же фильтры только в профиль. http://drupalcontrib.org/api/function/views_embed_view/6

Аватар пользователя cr0ss@drupal.org cr0ss@drupal.org 3 июля 2010 в 1:18

Исходя из логики фильтров... если они не exposed, его и задать нельзя, никак. Потому действительно аргумент подойдет здесь вполне, Validation -> Node Id from URL -> Node Type: Article допустим и потом просто закинуть аргумент.

Аватар пользователя FORTIS FORTIS 3 июля 2010 в 2:27

дело в том что аргументом передается uid и нужно просматривающему ноду пользователю показывать все типы нод если это админ и только блоги если обычный пользователь

Аватар пользователя FORTIS FORTIS 3 июля 2010 в 2:18

нашел, вот так добавляется фильтр на материалы типа блог:

        $options = array(
                'operator' => 'in',
                'value' => array(
                        'blog' => 'blog',
                ),
                'group' => '0',
                'exposed' => FALSE,
                'expose' => array(
                        'operator' => FALSE,
                        'label' => '',
                ),
        );

        $view->add_item($display_id, 'filter', 'node', 'type', $options);

Аватар пользователя vgoodvin vgoodvin 3 июля 2010 в 9:13

"FORTIS" wrote:
дело в том что аргументом передается uid и нужно просматривающему ноду пользователю показывать все типы нод если это админ и только блоги если обычный пользователь

Ставите первым агрументом во вьюс тип ноды. Дальше:

<?php
/**
 * VIEW_NAME - имя вьюса
 * VIEW_PAGE - страница вьюса, например default, page_1, page_2, block_1. По умолчанию default
 */
$arg = ($uid == 1) ? 'all' 'blog';
return 
views_embed_view(VIEW_NAMEVIEW_PAGE$arg);
?>

Все.