Exclure d'une vue Drupal des noeuds résultant d'une autre vue

Tagged:

Le plugin Views de drupal est plutôt énorme en fait, je découvre chaque jour des nouvelles choses par moi même, et la seule limite de ce plugin c'est le développeur en fait !

Donc la l'idée c'est :
- J'ai 2 vues :
* Une qui affiche 4 éléments dans un header
* Une qui affiche tous les noeuds sur la homepage

Un élément est dans le header s'il est mis en sticky, ce qui fait qu'on a toujours 4 éléments mais que les paramètres sticky ne disparaissent pas par magie. Ces 4 éléments ne sont donc jamais les mêmes et c'est souvent des trucs récent, donc l'idée ce serait de pas avoir du contenu en double sur la homepage, mais quand même d'avoir ce contenu au moins une fois lorsque les noeuds sortent du header.

On ne peut donc pas faire la vue homepage en se basant sur sticky c'est trop contraignant ... Bref stop blahblah à l'action :

Dans la vue "homepage" il suffit d'ajouter un argument, de ne pas l'ajouter dans l'url avec le %. Du coup on ne fournit pas d'argument dans "Action à mener si l'argument est absent" on dit "Fournir l'argument par défaut" on y coche Code PHP et le code est comme suit :

  1. $args = array();
  2. $results = views_get_view_result('topfour');
  3. foreach ($results as $obj) {
  4. $args[] = $obj->nid;
  5. }
  6. return implode(',', $args);

Ce qui appelle l'autre vue et retourne une chaine contenant les 4 ids. Ne pas oublier de cocher "Autoriser plusieurs termes par argument" et "Exclure l'argument" et le tour est joué ...