Drupal中的嵌套关​​系

时间:2011-12-13 08:00:52

标签: drupal nested

我有一个D7网站,用户可以在其中制作内容(显然......)。所以每个节点都有自己的作者。每个作者都是组织的成员。但他可以成为一个以上组织的成员。到目前为止的事实。

我想创建一个在Author上过滤内容的视图。非常简单,在“内容的作者”上设置视图的关系,并选择当前用户作为过滤器。
但我想要的是过滤作者的组织。所以实际上它是一个嵌套的关系。过滤当前登录用户的节点(这很简单),但如何过滤当前登录用户的组织?

1 个答案:

答案 0 :(得分:0)

好的,面板没有用,所以我写了自己的钩子: - )

function mymodule_views_pre_view (&$view, &$display_id, &$args) {
    // Only execute this script when the view 'fiches_my_thema' is called
    if ('fiches_my_thema' == $view->name) {
        // Get users thema
        global $user;
        $userRoles = $user->roles;
        $user_themas = array();

        // Filter roles so you end up with the "Thema's".
        foreach ($userRoles as $key) {
            if(strpos($key,'edacteur')) {
                $key = str_replace('Redacteur - ','', $key);
                $key = str_replace('Eindredacteur - ','', $key);
                $user_themas[] = $key;
            }   
        }

        // Resolve tid
        $terms = taxonomy_get_tree(5);
        $allRoles = array();
        $arguments = array();

        // Assign the 'tid' to a variable
        foreach ($terms as $key) {
            $singleRoles =  $key->name;
            $allRoles[] = $singleRoles;
            if(in_array($singleRoles, $user_themas)) {
                $arguments[] = $key->tid;
            }   
        }

        // Only when the arguments are NOT empty, set the arguments
        if(!empty($arguments)) {
            $finalArguments = implode("+", $arguments);
            $args[] = "$finalArguments";
            $view->set_arguments($args);
        }
    }
}