Le fil de commentaires commençant ici décrit une solution de contournement efficace. MotoTribe lié au même fil, mais au moment de sa question, il n'y avait aucun exemple de travail sur cette page. Maintenant, il y a, comme suit:
Dans votre module, implémentez hook_views_api()
:
function MODULENAME_views_api() {
return array(
'api' => 3,
);
}
Ajoutez ensuite un nouveau fichier à votre module appelé MODULENAME.views.inc et implémentez hook_views_query_alter()
:
function MODULENAME_views_query_alter(&$view, &$query) {
if ($view->name == 'whatever_your_view_is_called') {
$query->where[0]['type'] = 'OR';
}
}
Soyez également conscient de cette mise en garde:
Apparemment, le filtre "Contenu: Publié (Oui)" fourni avec chaque vue est considéré comme faisant partie du même groupe de filtres que les filtres contextuels (groupe 0). Donc, pour que ma vue affiche uniquement les nœuds publiés qui appartiennent à l'un des groupes spécifiés par les filtres contextuels (publié ET (arg1 OU arg2 OU ...)), j'ai dû déplacer le "Contenu: Publié (Oui)" dans un nouveau groupe de filtres (à l'aide de la boîte de dialogue "And / Or, Réorganiser"). Notez que l'interface utilisateur n'affichait pas le filtre "Contenu: Publié (Oui)" différemment après l'avoir déplacé dans un nouveau groupe (il n'y avait pas d'autres groupes), mais dans l'objet de requête qui y est passé, hook_views_query_alter()
il s'est déplacé du groupe 0 au groupe 1, ce qui fait que le code des fonctions ci-dessus ne l'affecte plus.