exposed Filter und Display
am 02.05.2012 - 16:58 Uhr in
Hallo zusammen,
ich habe mal wieder ein hoffentlich kleines Problemchen mit einer View.
Die View filter Artikel nach dem Datum.
Dieser Filter ist "exposed" also ausgelagert und kann von dem Besucher selbst eingestellt werden.
Folgendes würde ich gerne erreichen:
Wenn der Filter auf "Alle anzeigen" steht, dann möchte ich Artikel beginnen mit Artikel mit dem Datum größer gleich heute.
Möglicherweise in einem attachment ältere Artikel auch noch darstellen, dass muß aber erst einmal nicht sein.
Wenn der Filter z.B. auf Mai 2012 steht, dann eben nur die Artikel aus Mai 2012.
Die Felder, die genau diese Daten enthalten, sind vorhanden.
Das Problem ist, dass da ja eigentlich zwei Filter sind, die ich nicht mit AND oder OR verbinden kann, denn zum einen bei "Alle anzeigen" ist es ein Filter für "Datum größer als heute" und bei Mai 2012 eben aus dem Mai 2012.
Ich hatte mir überlegt, dass ich diese beiden Filter ja in zwei Displays packen könnte. Dann könnte ich in dem einen Display eben alle anzeigen lassen, beginnend ab heute und wenn ich im exposed Filter einen Monat auswähle, dann eben das Display, welches mir den entsprechenden Monat filtern.
Ich habe aber noch keine Möglichkeit gefunden, wie ich dem exposed Filter sagen kann: Zeige mir bitte die Ergebnisse aus Display page_1 an.
Die Filter werden über die URL übertragen, ich kann also auch auf die args der URL zurückgreifen.
Hat von euch jemand eine Idee, wie man das realisieren kann.
Habe ich mich da total verrant ?
Am liebsten wäre es mir, wenn ich in der URL, die die View aufruft einfach angeben könnte, zeige mir das Display XY an.
Mal schauen, was ihr so darüber denkt.
grübelden Gruß
Daniela
- Anmelden oder Registrieren um Kommentare zu schreiben
Ich bin immer noch keine
am 03.05.2012 - 12:02 Uhr
Ich bin immer noch keine Schritt weiter :-(
Ich formuliere die Frage noch mal neu, vielleicht war es oben ja zu umständlich formuliert.
ich filtere Artikel nach Monat und Jahr mit einem Exposed Filter.
Wenn ich beim exposed Filter "Any" aufrufe, also alle, dann sollen eben nicht alle, sondern nur noch alle zukünftigen (Datum größer gleich heute) angezeigt werden.
Es müßte doch eine Standardlösung dafür geben, denn so exotisch ist es ja nicht.
Ich habe dazu nur folgende Frage im Netz gefunden.
http://drupal.org/node/1444370
Leider auch dort keine Antwort :-(
Es wäre echt toll, wenn hier jemand etwas dazu sagen könnte, wie man das lösen kann.
verzweifelten Gruß
Daniela
Mich würde interessieren, wie
am 07.05.2012 - 12:46 Uhr
Mich würde interessieren, wie Du es denn hinbekommen hast, dass die View Deine Artikel nach Datum durchsucht.
Ich hab von Haus aus keine passenden Felder gefunden.
Der Screencast vom Kollegen Lausch http://www.youtube.com/watch?v=S3oDCrIiilI ,
scheint mir aber ein wenig umständlich für eine einfache Datumssortierung.
Aber es funktioniert.
Meine Lösung, die ich in dem
am 07.05.2012 - 13:32 Uhr
Meine Lösung, die ich in dem Video vorgeschlagen habe, funktioniert in der Tat aus meiner Sicht ganz gut.
Ich finde sie eigentlich auch nicht besonders umständlich :-) aber gut, das ist sicherlich auch Ansichtssache.
Für dein Problem Daniela, gibt es aus meiner Sicht keine triviale Lösung.
Ich habe das auch schon mal realisieren müssen und bin dabei folgendermaßen vorgegangen:
noch mal zum Sachverhalt: eigentlich sind es ja zwei Filter, die du auf die Artikel "loslassen" mußt.
Eben ein Filter, der die Monat/Jahr Geschichte filtert und ein Filter, der beim "Alle Anzeigen" die Liste so filtert, dass nur die zukünftigen Artikel herausgefiltert werden.
Dieser zweite Filter ist eben auch noch sozusagen dynamisch, denn er ändert sich ja von Tag zu Tag.
Ich habe also einen zweiten exposed Filter dazugenommen, welcher alle Artikel ausgibt, die eine Datum haben, welches in der Zukunft liegt.
Es gibt ein Views Hack Modul, so dass man die beiden exposed Filter auch kombinieren kann.
Dieser Filter ist zwar exposed, soll aber nicht vom Besucher ausgefüllt werden, sondern von der Maschine.
Ich bin also hingegangen und habe per JQuery diesen Filter ausgefüllt, und zwar einmal mit größer oder gleich dem heutigen Datum, wenn im vorherigen Filter "Alle Artikel" ausgewählt wurde und nichts, wenn Artikel aus einem bestimmten Monat ausgewählt worden sind.
Das liefert genau das Ergebnis, welches du möchtest.
Eine bessere Lösung ist mir für dieses Standardproblem auch noch nicht eingefallen.
lieben Gruß
Berthold Lausch
Drupal Video-Tutorials
Hallo Berthold, vielen Dank
am 09.05.2012 - 11:09 Uhr
Hallo Berthold,
vielen Dank für deine ausführliche und kompetente Antwort.
Ich habe mir das zig mal durchgelesen und langsam komme ich dahinter, wie du das Problem gelöst hast.
Ich fasse noch mal zusammen:
du hast einen zweiten exposed Filter dazu genommen, damit du diesen mit der JQuery sozusagen auf der Seite selbst füllen kannst (onChange Event des ersten Filters) und zwar mit dem heutigen Datum, wenn der andere Filter auf „Alle anzeigen“ steht.
Erster Filter steht auf „Alle Anzeigen“, daraus folgt: der zweite Filter filtert nach Datum größer gleich heute.
Wenn nichts in dem Filter drin steht, dann werden die Artikel mit dem zweiten Filter (größer gleich Nichts), bewirkt der zweite Filter gar nicht.
Der zweite Filter ist demnach nur ein Textfeld und keine Auswahlbox.
Da der zweite Filter ja gar nicht auf der Seite sichtbar sein soll, kann ich den ja per CSS verstecken.
Ich habe das Auswahlfeld auf automatic Submit und Hide Submitbutton gesetzt und der zweite Filter reagiert ja auch auf den Event onchange.
Ich hoffe nur, dass die sich nicht in die Quere kommen.
Also je mehr ich darüber nachdenke, eigentlich eine ganz pfiffige Lösung.
Hut ab, da wäre ich nie darauf gekommen.
Ich hatte ja so einen Ansatz verfolgt, jeweils unterschiedliche Displays der Views anzeigen zu lassen, aber damit bin ich nicht weitergekommen.
Es ist schon merkwürdig, dass es für dieses Standardproblem keine Standardlösung gibt, oder weiss jemand sonst hier noch eine Lösung, die funktioniert.
liebe Grüsse
Daniela K.
Ohne Date Modul wohl nicht möglich
am 09.05.2012 - 14:40 Uhr
Ich würde halt gerne nur mit dem normalen angespeicherten Artikeldatum arbeiten, aber das geht wohl nicht?
Das Problem ist dann natürlich, dass ich danach nicht filtern kann, da fehlt das Feld für.
Du kannst doch aus dem
am 09.05.2012 - 16:24 Uhr
Du kannst doch aus dem Artikeldatum per computed_fields ein neues Feld berechnen lassen.
Das ist doch gar nicht problematisch :-)
Gruß
Berthold Lausch
Drupal Video-Tutorials
Hallo Daniela, Du hast das
am 09.05.2012 - 17:39 Uhr
Hallo Daniela,
Du hast das ganz gut zusammengefaßt, wie ich die Lösung dieses Problem angegangen bin.
Ich habe das Auswahlfeld auf automatic Submit und Hide Submitbutton gesetzt und der zweite Filter reagiert ja auch auf den Event onchange.
Ich hoffe nur, dass die sich nicht in die Quere kommen.
Ich verwende auch auto-Submit in dem Drop-Down Filter und es gibt bei mir keine Probleme damit.
Auch ich war verwundert, dass ich für dieses Standardproblem keine Standardlösung gefunden habe, denn ich konnte mir gar nicht recht vorstellen, dass das nicht schon vollständig gelöst ist.
Aber ich habe nichts gefunden und mich deshalb selbst an eine Problemlösung gesetzt und diese ja auch gefunden.
Mich würde auch interessieren, wie andere diese Problematik gelöst haben :-)
vielleicht erfahrne wir ja noch irgendwas hier im Forum, man kann ja nie wissen.
lieben Gruß
Berthold Lausch
Drupal Video-Tutorials
Contextual filters & Jump Menu
am 11.05.2012 - 13:49 Uhr
Habe gerade gesehen, dass es in Views unter " Contextual filters" einen Filter "Content: Created year + month" gibt.
Den kann ich so einstellen, das er als Drop Down die Monate ausgibt, in denen Artikel gespeichert sind:
- Display a summary: Descending
- Sortierung nach: Date
- Format: Jump menu
Dann den "Go"-Button noch hiden und fertig ist der Archiv-DropDown.
Klappt das bei Euch auch?
PS: Weiß jetzt allerdings nicht, ob der Contextual filter schon im Core mitgeliefert wurde.
Gruß
Helge
Contextual Filters ist ein
am 11.05.2012 - 20:23 Uhr
Contextual Filters ist ein Bestandteil von Views und es klappt auch einwandfrei.
Ich denke mal für deine Anforderungen funktioniert es über Contextual Filters ganz gut.
Daniela ging es aber wohl nicht um das Erstellungsdatum, denn das kann ja nicht in der Zukunft liegen (also Datum größer gleich heute) sondern mehr um eine Datum, welches als Feld in einem Artikel bzw. in einer Node enthalten ist.
So wie zum Beispiel bei einer Veranstaltung, die ja entweder in der Zukunft oder in der Vergangenheit liegen kann.
Mich würde interessieren, wie Du es denn hinbekommen hast, dass die View Deine Artikel nach Datum durchsucht.
Ich hab von Haus aus keine passenden Felder gefunden.
Jetzt habe ich erst verstanden, was diese Frage überhaupt bedeutet....
Die Nodes werden natürlich nicht nach dem Datum durchsucht, sondern das Datum ist ein separates Feld in dem Inhaltstyp, welches auch ausgefüllt werden muß.
Gruß
Berthold Lausch
Drupal Video-Tutorials