Nach einer Weile im Internet und in SE scheint es mir keine gute Lösung zu geben, 2 contextual filters
mit OR zu kombinieren (anstatt dem Standard-AND).
Dieser Beitrag erwähnt einen PHP-Hack und dieser Beitrag enthält einige Links zu einem Problem , in dem eine kürzlich erfolgte Änderung in den Ansichten 7.x-3.1 angegeben ist . Es wird auch die Verwendung hook_views_query_alter(&$view, &$query)
zum Ändern der Ansicht erwähnt.
Hat jemand ein funktionierendes Beispiel oder eine bessere Lösung?
Antworten:
Probieren Sie den Patch in diesem Problem aus: Ziehen Sie den Filterwert aus einem Argument
Hiermit können Sie den Wert aus dem Kontextfilter an den "normalen Filter" übergeben. Dort können Sie Ihre fortgeschrittenen Konditionen machen.
quelle
Der hier beginnende Kommentarthread beschreibt eine effektive Problemumgehung. MotoTribe hat auf den gleichen Thread verlinkt, aber zum Zeitpunkt seiner Frage gab es auf dieser Seite kein funktionierendes Beispiel. Nun gibt es wie folgt:
Implementieren Sie in Ihrem Modul
hook_views_api()
:Fügen Sie dann Ihrem Modul eine neue Datei mit dem Namen MODULENAME.views.inc hinzu und implementieren Sie
hook_views_query_alter()
:Beachten Sie auch diese Einschränkung:
Anscheinend wird der Filter "Inhalt: Veröffentlicht (Ja)", der mit jeder Ansicht geliefert wird, als Teil derselben Filtergruppe wie die Kontextfilter (Gruppe 0) betrachtet. Um in meiner Ansicht nur veröffentlichte Knoten anzuzeigen , die zu einer der durch Kontextfilter angegebenen Gruppen gehören (veröffentlichtes UND (arg1 ODER arg2 ODER ...)), musste ich den "Inhalt: Veröffentlicht (Ja)" in verschieben eine neue Filtergruppe (über den Dialog "And / Or, Rearrange"). Beachten Sie, dass die Benutzeroberfläche den Filter "Inhalt: Veröffentlicht (Ja)" nicht anders angezeigt hat, nachdem ich ihn in eine neue Gruppe verschoben habe (es gab keine anderen Gruppen), aber in dem Abfrageobjekt, das übergeben wurde, wurde
hook_views_query_alter()
er verschoben es aus der Gruppe 0 in die Gruppe 1, wodurch der Code in den obigen Funktionen nicht mehr beeinflusst wird.quelle
Es gibt ein Modul, das die Handler von Ansichten so ändert, dass Kontextfilter mit ODER anstelle von UND verwendet werden: Ansichten Kontextfilter ODER
quelle
Die Situation mit Kontextfiltern und Filtergruppen ist in der Tat trostlos. Hier ist ein Thread über "Do" für dieses Toppic, das die gleiche Lösung hat, wie von @CoreDumpError angegeben.
https://drupal.org/node/1451218
Außerdem finden Sie hier ein Modul, mit dessen Hilfe sich widersprüchliche kontextbezogene und exponierte Filter auflösen lassen ... Ansichten Filter Harmonizer
quelle