Вложенные отношения в Drupal - PullRequest
0 голосов
/ 13 декабря 2011

У меня есть сайт D7, где пользователи могут создавать контент (очевидно ...). Так что у каждого узла есть свой автор. Каждый автор является членом организации. Но он может быть членом более чем одной организации. Пока что факты.

Я хотел бы создать представление, в котором контент фильтруется по автору. Очень просто, установите отношение представления в «Автор контента» и выберите текущего пользователя в качестве фильтра.
Но то, что я хотел бы, это фильтровать по организации автора. Так что на самом деле это вложенное отношение. Фильтрация узлов текущего зарегистрированного пользователя (это легко), но как я могу отфильтровать текущую зарегистрированную организацию пользователя?

1 Ответ

0 голосов
/ 13 декабря 2011

Хорошо, панели не работают, поэтому я написал свой собственный хук: -)

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);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...