In meinem aktuellen Setup mache ich eine Ansicht verfügbar, die json über einen Dienst ausgibt.
Die Ansicht kann folgendermaßen aufgerufen werden : http://domain.com/api/books.json
.
Ich habe auch einen Filter einem referenzierten Inhaltstyp "Autor" ausgesetzt. Ich benutze NICHTcontext filters
, ich benutze den regulären Filters
und habe diesen bestimmten Filter dem Benutzer zugänglich gemacht. Auf diese Weise kann ich meinem Filter einen schönen Argumentnamen geben author_nid
.
Jetzt kann ich das so nennen : http://domain.com/api/books.json?author_nid=38
. Und dies gibt alle Bücher des Autors mit dieser NID zurück.
Aber ich kann nicht herausfinden, wie ich die Liste der Bücher von Autor 38 oder Autor 32 bekomme.
Die Dinge, die ich versucht habe:
http://domain.com/api/books.json?author_nid=38,32
http://domain.com/api/books.json?author_nid=38+32
http://domain.com/api/books.json?author_nid[]=38,32
http://domain.com/api/books.json?author_nid[]=38+32
http://domain.com/api/books.json?author_nid[0]=38&author_nid[1]=32
Ich habe anscheinend das Gefühl, dass dies derzeit nicht unterstützt wird. Hab ich recht? Wenn ja, welche Möglichkeiten habe ich? Ich möchte meinen Argumenten einen Namen geben, da ich 10 bis 15 Filter verfügbar machen werde (einige optional, andere erforderlich). Verwenden von Kontextfiltern und Filtern wie args[]=2&args[]=43,23&args[]=44
folgt : ist nicht sehr lesbar / wartbar.
hook_views_query_alter
.Antworten:
Wenn die Verwendung
?author_nid[]=38&author_nid[]=32
wie von Milkovsky vorgeschlagen nicht funktioniert, müssen Sie möglicherweise die Verwendung von Kontextfiltern prüfen . Oder, wie ich denke, ist Ihre einzige Option, verwenden Sie hook_views_query_alter, wo Sie Ihre eigene WHERE-Klausel für die Abfrage von Ansichten basierend auf $ _GET-Parametern erstellen können.quelle
Vielleicht ist es nur ein Problem mit der Codierung. Ich habe die gleiche Konstruktion (Ansichten mit mehrwertigem Feld im belichteten Filter), und hier ist das Ergebnis, wenn ich die Schaltfläche "Senden" anwende:
http://mywebsite.com/search-housing?field_rooms_value%5B%5D=1&field_rooms_value%5B%5D=2
Könnten Sie das versuchen und mir sagen, ob es funktioniert?
http://domain.com/api/books.json?author_nid%5B%5D=38&author_nid%5B%5D=32
quelle
Ich stimme Christian und MPD zu, es gibt keine "is one of" -Option für NID. Christians Antwort zu hook_views_query_alter wird funktionieren.
Als alternative Lösung können Sie den Filterhandler durch einen benutzerdefinierten ersetzen. Hier ist eine Lösung für die Such-API-Abfrage. Der nächste Handler verwendet die Option "Mehrfachauswahl zulassen":
Sie können Ihren Handler mit hook_views_data_alter () hinzufügen.
quelle
Sie können mehrere Werte mithilfe des Kontextfilters übergeben.
Wählen Sie Rohwert aus der URL und dann PathComponent / arugument.
Im Folgenden finden Sie einen weiteren Abschnitt, in dem Sie die Option Mehrere Werte in Form von 1 + 2 + 3 (für ODER) oder 1,2,3 (für UND) zulassen aktivieren können .
http://example.com/some-path/24+25
oder
http://example.com/some-path/24,25
quelle