core
core copied to clipboard
Filter-Selectfeld für das Frontend aus Filtereinstellungen
Ein schönes Feature könnte sein, wenn es möglich ist die Filter aus den Filtereinstellungen per Select Feld im Frontend anwenden zu können. Dann wäre es z.B. auch möglich SQL-Filter mit einem Klick auf die Frontendliste anzuwenden, und würde es u.U. manchmal ersparen den Filterparameter immer als Attribut in einem seperaten MM anlegen zu müssen.
Kannst du das hier evtl. ein wenig genauer definieren? Gerne auch mit mockup des gewynschten Verhaltens.
In den Filtereinstellungen würde man einen Filter erstellen (hier "Ein Filter"), der aus mehreren Filtern zusammengebaut sein kann, die dann beim normalen Verhalten alle angewendet werden.

Im Frontend soll es aber auch die Möglichkeit geben eine Auswahl aus den Filtern von "Ein Filter" zu wählen. Also so:

Dort kann man dann nur einen Filter einer Filtereinstellung anwenden.
Sehe ich nun nicht wirklich den Sinn dahinter. Zumal das komplett entgegen der Implementierung der Filter settings waere, da muss man dann also alles neu bauen.
Der nutzen an sich erschliesst sich mir jedoch in keinster Weise. Wenn du im FE anders filtern willst, dann kannst du dir doch ein separates Filter setting anlegen und es klappt alles?
Was genau willst du hier erreichen? Wo liegt der Mehrwert?
Hintergrund war, dass ich auf die Items von einem MM verschiedene Filtern anwenden möchte. Bei den Filtern handelt es sich um SQL-Abfragen. Dazu sollte es im FE ein Selectfeld geben.
Wenn man nach Attributen Filtert (z.b. in einem MetaModel namens AUTOS nach MARKE) lässt sich das leicht lösen, da man ein FE-Filtermodul erstellt, welches dann alle Items auflistet die im Feld "Marke" gleiche Einträge haben - auswählbar über ein Selectfeld im FE.
Nun möchte ich aber im FE auch ein solches Selectfeld, nur mit unterschiedlichen SQL-Abfrgen (um z.B. nach Items zu filtern welche einen bestimmten regulären Ausdruck enthalten, oder sonst irgendwelche SQL-Bedingungen erfüllen). Wie löse ich das? Im Template ist das sicher möglich, allerdings wäre es auch komfortabel wenn man die Subfilter (also die einzelnen Filterparameter eines Filters) als solches Sectfeld darstellen könnte. Dann wäre es möglich die SQL-Abfragen komfortabel in MM einzupflegen.
So wie es klingt wird es wohl bei einer Lösung über das Template bleiben - die Items diekt mit SQL zu filtern klingt für mich aber eleganter. Die eigentliche Fragestellung war hier aufgekommen: https://community.contao.org/de/showthread.php?57653-Frontend-Filter-quot-Eigenes-SQL-quot-Attribut-wird-nicht-im-Modul-angezeigt
als Workaround würde ich versuchen, die verschiedenen "Filter-Varianten" als eigenständige Filter anzulegen - in der FE-Ausgabe (Template) könnte man das MM über eine variable Filterung abfragen, in dem man die entsprechende Filter-ID dynamisch einsetzt: die Filter-ID könnte man als POST- oder GET-Parammeter übergeben
@hippc ist das Thema noch aktuell?
Es gibt das "Dilemma", dass es zur Filterregel "Eigenes SQL" keine Möglichkeit gibt, ein Formularwidget in die FE-Ausgabe "einzuschleusen" - jedoch das FE-Modul MM-Liste "lauscht" relativ stur auf die Key-Value-Paare in der URL, so dass man hier etwas tricksen kann.
Frage ist an der Stelle, ob es noch weitere Filterregeln gibt, die ausgewertet werden (sollen/müssen), oder es um die Auswahl geht "verwende SQL-Regel 1 ODER 2 ODER 3".
Ich denke dafür gibt es einige Workarounds, mit denen sich das umsetzen ließe...
Offensichtlich ist die Nachfrage nicht so groß...
Man könnte die Sache wie folgt umsetzen:
- Du machst einen Filter "Filterregeln-Lager" in dem Du Deine verschiedenen Queries anlegst
- Du bast Dir eine eigene Filterregel, welches alle Filterregeln aus "Filterregeln-Lager" als Select ausgibt und dann das gewünschte anwendet - siehe https://www.e-spin.de/contao-metamodels/metamodels-vortrag-contao-konferenz-2023.html ab Seite 26
- Filterregel "FE-Filter" mit der Filterregel aus 2.
Wenn Du weitere Filtertregeln in 2. hinzufügst, erscheinen die automatisch im FE - ggf. kann man die Bezeichnung für das FE-Select aus dem Kommentarfeld erstellen.