Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit leerem, striktem Textfilter

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit leerem, striktem Textfilter

    Um den anderen Thread nicht weiter zweigleisig zu fahren, mache ich einen neuen Thread zu meinem Problem auf.

    Folgendes Verhalten ist gewünscht:

    Es gibt eine Katalog-Seite mit Listen-Modul und Textfilter und weiteren Filtern. Bei Aufruf der Seite sollen alle Einträge angezeigt werden. Anschließend kann die Auswahl über die Filter nach Wunsch eingeschränkt werden. Wenn der Textfilter keine Treffer findet, soll ein Hinweis "Kein Treffer" erscheinen und nicht alle Einträge gelistet werden.

    Seit dem Januar-Update muss der Textfilter, um den Hinweis "Kein Treffer" zu erzeugen, auf strikt eingestellt werden, da er andernfalls einfach ignoriert wird, wenn kein Treffer gefunden wurde. Das führt dann dazu, dass alle Einträge angezeigt werden.

    Da der Textfilter nach dem Januar-Update, wenn strikt, aktuell einen negativen Wert ausgibt, wenn er leer ist, gelingt es mir nicht, beim Aufruf der Katalog-Seite alle Einträge anzeigen zu lassen. Erst nach einer Suche mit dem Textfilter werden überhaupt Einträge angezeigt. Auch werden weitere Filter vom leeren Textfilter "blockiert".

    Ein weiteres Problem: Wenn ich ein Textfeld mit erlaubten HTML-Eingaben mit einem strikten Textfilter filtern lasse, gibt der Textfilter immer einen negativen Wert aus, zeigt also keine Einträge an.

  • #2
    Deaktiviere in der Liste "Alle Einträge anzeigen, wenn leerer Filter". Damit ist die Liste leer bei Seitenaufruf. Scheitert jetzt der Filter bzw. läuft leer, wird dies ebenfalls als "Leere Filter" interpretiert -> Liste auch leer.

    Ein weiteres Problem: Wenn ich ein Textfeld mit erlaubten HTML-Eingaben mit einem strikten Textfilter filtern lasse, gibt der Textfilter immer einen negativen Wert aus, zeigt also keine Einträge an.
    Da sollte der Filter wohl besser auf "Ungenaue Suche" stehen. Sonst wird die Abfrage eigentlich immer scheitern.

    Ich würde eher die Eingabe von Html vermeiden in Feldern, die für einen Filterwert relevant sind - besonders Textfelder. Dafür gibt es Templates, die die Ausgabe steuern. Ein menschlicher Benutzer wird nie Html-Code als Suche nutzen.

    ---
    Das Filter "strikt" sein können, ist übrigens seit Version 2.6.0 (Juni 2017). Das ist enorm wichtig, da sonst Kombinationen bzw. gegenseitige Abhängigkeiten nicht möglich sind, wenn alle Filter quasi "durchgewunken" werden.
    Zuletzt geändert von Tim; 27.02.2018, 14:12.
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      (Vorneweg: Ich habe ein Update von 2.2.0 auf 2.15.0 durchgeführt. Vor dem Update ließ sich das gewünschte Verhalten herstellen.)

      "Zeige alle Einträge bei leerem Filter" ist bereits deaktiviert.
      Die Liste soll aber nicht leer sein bei Seitenaufruf, sondern alle Einträge zeigen: Bei Aufruf der Seite sollen alle Einträge angezeigt werden. Anschließend kann die Auswahl über die Filter nach Wunsch eingeschränkt werden. Wenn der Textfilter keine Treffer findet, soll ein Hinweis "Kein Treffer" erscheinen und nicht alle Einträge gelistet werden.

      Der Textfilter dürfte, für diesen Zweck, bei Seitenaufruf (also wenn leer) keinen negativen Wert ausgeben.

      Aktuell gibt zwei verschiedene Modi für den Textfilter mit folgendem Verhalten:
      • Strikt: wenn leer=negativer Wert; wenn kein Treffer=negativer Wert
      • Nicht-strikt: leer=ignorieren; kein Treffer=ignorieren
      Es bräuchte noch einen dritten Modus: leer=ignorieren, kein Treffer=negativer Wert

      Oder im Listen-Modul eine Option: Zeige alle Einträge, wenn Filter leer, aber zeige keine Einträge, wenn kein Treffer


      Zu den HTML-Eingaben: Der Filter steht bereits auf "ungenaue Suche". In Version 2.2.0 hat das allerdings auch ohne "ungenaue Suche" gut funktioniert.

      Kommentar


      • #4
        Zwei Möglichkeiten:
        1. Never change a running system. Nutze die Version, die für dich hier passt. Für viele hat es nicht gepasst. Es ist "out of the box" schlichtweg nicht möglich allen gerecht zu werden. Dafür sind die Anforderungen zu komplex. Da du vorher keinerlei Probleme hattest und das Leistungsspekturm ausreichend war für das Projekt, hätte ich gar nicht geupdated.
        2. (Hintertürchen) Folgende Einstellungen setzen quasi das Verhalten auf den vorherigen Arbeitsprozess:
        -- Filter auf "ist Strikt" -> Suche erfolgt mit AND
        -- Im Filter-Prozess die Striktheit entfernen über Globale (entfernt quasi den negativen Wert)
        Code:
        $GLOBALS['PCT_CUSTOMCATALOG']['FILTER'][-NAME-OR-ID-OF-THE-FILTER-]['strictMode'] = false;
        // dies ist im Changelog 2.6.0 vermerkt!

        ps. Bitte teile uns noch deine Bestellnummer mit. Mir müssen dies intern vermerken.
        http://www.premium-contao-themes.com

        Kommentar


        • #5
          Ich habe ein ähnliches Problem.

          Zeige alle Einträge bei leerem Filter ist deaktiviert.
          Filter steht auf strikt.
          Code:
          $GLOBALS['PCT_CUSTOMCATALOG']['FILTER'][140]['strictMode'] = false;
          steht in der initconfig.php

          Alle Filter sind via Abfragekombinierer mit AND "verbunden".

          Der Textfilter funktioniert auch prima. Allerdings sollen eben beim Aufruf der eigentlichen Seite alle Einträge angezeigt werden.

          Grüße,
          mapfei

          Kommentar


          • #6
            initconfig ist gut.

            Man setze dies in Abhängigkeit ob Werte gesetzt sind oder nicht.
            Code:
            // wenn "meinFilter" leer, sei nicht strikt
            if( \Input::get('meinFilter') == '')
            {
                $GLOBALS['PCT_CUSTOMCATALOG']['FILTER']['meinFilter']['strictMode'] = false;
            }
            http://www.premium-contao-themes.com

            Kommentar


            • #7
              Ich spiele das mal durch und habe mir ein Issue dazu erstellt. Die jetzige Regelung basiert zwar auf Feature Requests hier im Forum, als auch direkter Projektarbeit, aber ich sehe auch die schnelle Verwirrtheit. Ich denke die Checkbox "Zeige alle Einträge bei leerem Filter" sollte die höchste Priorität in der Kette haben haben.

              Klicke auf die Grafik für eine vergrößerte Ansicht

Name: screenshot_3407.jpg
Ansichten: 53
Größe: 62,0 KB
ID: 12397
              http://www.premium-contao-themes.com

              Kommentar


              • #8
                Habe jetzt
                Code:
                if( \Input::get('Suchbegriff') == '')
                {
                    $GLOBALS['PCT_CUSTOMCATALOG']['FILTER']['Suchbegriff']['strictMode'] = false;
                }
                ergänzt, alle Einträge bei leerem Filter aktiv und den Textfilter auf strikt stehen. Cache geleert. Beim Aufruf der Seite werden allerdings immer noch nicht alle Einträge angezeigt.

                Kommentar


                • #9
                  Der Schlüssel ist der url-GET-Parameter des Filters. In diesem Fall "suchbegriff". Siehe url wenn der Filter gesetzt ist.
                  http://www.premium-contao-themes.com

                  Kommentar


                  • #10
                    Aha!! Sehr schön!! 👍
                    Funktioniert das auch analog mit der Umkreissuche, wenn hier der Radius auf > 0 steht?

                    Kommentar


                    • #11
                      Dasselbe möchte ich für die Umkreissuche umsetzen, also
                      Code:
                      if( \Input::get('plzort_address') == '')
                      {
                          $GLOBALS['PCT_CUSTOMCATALOG']['FILTER']['plzort_address']['strictMode'] = false;
                      }
                      Scheint aber so nicht zu funktionieren. Jedenfalls werden bei Aufruf der Detailsuche keine (0) Einträge angezeigt.
                      Bzw. wenn ich eine PLZ suche (10km Umkreis) und es keine Treffer gibt, werden alle Einträge angezeigt. Erhöhe ich jedoch den Umkreis, greift irgendwann der Radius.
                      Zuletzt geändert von mapfei; 27.08.2018, 12:21.

                      Kommentar


                      • #12
                        Der Filter liegt auf "plzort".
                        http://www.premium-contao-themes.com

                        Kommentar


                        • #13
                          Ok. Nächstes Problem:

                          Setze ich den Filter zurück und suche z.B. nur nach eine Bundesland, bekomme ich 0 Ergebnisse angezeigt, weil in den Parametern nun ein &plzort=0 steht.

                          Kommentar


                          • #14
                            Man würde bei einem Zahlenwert auf > 0 abfragen. Dann ist das kein Problem.
                            http://www.premium-contao-themes.com

                            Kommentar


                            • #15
                              Schon (habe jetzt Minimum 10 eingestellt). Wende ich jedoch einen "frischen Filter" an, und suche ausschließlich nach Bundesland, also z.B.:

                              ?suchbegriff=&plzort_address=&plzort=10&bundesland =Hessen&datum_von=&datum_bis=

                              so erhalte ich keine Suchergebnisse, obwohl 97 Einträge zu Hessen vorhanden sind.

                              Kommentar

                              Lädt...
                              X