Wie aus einer SELECT Abfrage eine View erstellen.
am 01.01.2016 - 19:17 Uhr in
Hallo zusammen,
ich habe einen Nodetype "documents" und soll nun benutzerspezifische View erstellen. Leider ist es nicht damit getan einfach die uid als Contextual Filter zu übergeben.
Die Nodes, die einem Benutzer angezeigt werden sollen, werden jeweils durch eine relativ komplexe SQL Abfrage erstellt. Diese Abfrage kann ich nicht direkt in der View erstellen.
Beispiel:
user id = 5
views-Pfad: meineneueview/5
Document Nids, die die Select Abfrage für User 5 zurückliefert: 14, 234, 777...892 (bis zu 40)
Diese nids möchte ich jetzt als Filter an die View übergeben, so dass nur Documents mit diesen nids in der View angezeigt werden, der User aber die Möglichkeit hat noch mit Views-Bordmitteln zu filtern und zu sortieren.
Ich bin auf hook_views_data und die views_filter gestossen.
class meinfilter_handler extends views_handler_filter {
function query() {
???
}
}
Allerdings habe ich keine Ahnung, wie ich der query function jetzt beibringe, welche nids sie an die View zurückmelden soll.
Hat jemand einen Tipp für mich?
Danke & Grüße
rhodes
- Anmelden oder Registrieren um Kommentare zu schreiben
da übergibst du die user id
am 02.01.2016 - 06:50 Uhr
da übergibst du die user id (oder author id und evtl. beziehung zu author) als filter und die anderen filter kannst du ja als exposed setzen. schon fertig mit nur einem (1) view
C.A.W. Webdesign
Leider nicht
am 02.01.2016 - 09:39 Uhr
Die Nodes, die einem Benutzer angezeigt werden sollen, werden jeweils durch eine relativ komplexe SQL Abfrage erstellt. Diese Abfrage kann ich nicht direkt in der View erstellen.
...
class meinfilter_handler extends views_handler_filter {
function query() {
???
}
}
...da die Nodes, die einem User in der View angezeigt werden sollen ausserhalb der View ermittelt werden. Es ist leider aufgrund der Komplexität und der vielen Parameter der Abfrage nicht möglich, diese SELECT Abfrage direkt in der View zusammenzubauen. Deshalb soll ein eigener Filter-Handler für die View geschrieben werden, der das Ergebnis der Abfrage an die View weitergibt. Und die Frage ist nun, wie ich diesem neuen Filter genau das beibringe...
View ist Datenbankabfrage
am 02.01.2016 - 11:37 Uhr
und generiert im Hintergrund eine (oder mehrere) entsprechende SQL-Query(s).
Grüße
Ronald
...
am 02.01.2016 - 13:58 Uhr
...
C.A.W. Webdesign
Genau,
am 02.01.2016 - 14:36 Uhr
Views ist selber ein Query-Generator. Nur ist der für meine Zwecke leider nicht geeignet (siehe oben). Mein node-array kommt aus einer anderen SELECT Abfrage.
Und meine Frage ist deshalb einfach nur, wie ich einen Array mit node IDs an eine selbst geschriebene Filtererweiterung übergebe. Es wäre toll, wenn das jemand wüsste.
Du kannst natürlich ein eigenes Modul schreiben,
am 03.01.2016 - 21:11 Uhr
das das Ergebnis über hook_blocks zur Verfügung stellt.
Das Ergebnis kann ja dann die Struktur eines rendarable arrays haben, so wie es auch Views zur Verfügung stellt.
Grüße
Ronald