El hilo de comentarios que comienza aquí describe una solución efectiva. MotoTribe estaba vinculado al mismo hilo, pero en el momento de su pregunta, no había ningún ejemplo que funcionara en esa página. Ahora hay, como sigue:
En su módulo, implemente hook_views_api()
:
function MODULENAME_views_api() {
return array(
'api' => 3,
);
}
Luego agregue un nuevo archivo a su módulo llamado MODULENAME.views.inc e implemente hook_views_query_alter()
:
function MODULENAME_views_query_alter(&$view, &$query) {
if ($view->name == 'whatever_your_view_is_called') {
$query->where[0]['type'] = 'OR';
}
}
También tenga en cuenta esta advertencia:
Aparentemente, el filtro "Contenido: publicado (Sí)" que viene con cada vista se considera parte del mismo grupo de filtros que los filtros contextuales (grupo 0). Entonces, para que mi vista muestre solo nodos publicados que pertenecen a cualquiera de los grupos especificados por filtros contextuales (publicado AND (arg1 OR arg2 OR ...)), tuve que mover el "Contenido: Publicado (Sí)" a un nuevo grupo de filtros (usando el diálogo "Y / O, Reorganizar"). Tenga en cuenta que la interfaz de usuario no mostró el filtro "Contenido: publicado (sí)" de manera diferente después de que lo moví a un nuevo grupo (no había ningún otro grupo), pero en el objeto de consulta que se pasó hook_views_query_alter()
se movió desde el grupo 0 al grupo 1, lo que hace que el código en las funciones anteriores ya no lo afecte.