Ankündigung

Einklappen
Keine Ankündigung bisher.

Katalog nach zwei Feldern sortieren?

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

  • Katalog nach zwei Feldern sortieren?

    Hi,

    habe ein kleines Problem mit der Sortierung und Filterung eines Kataloges. Der Katalog enthält Veranstaltungsdaten mit einem Datumsfeld (timestamp), welches das Datum im Format d.m.Y, H:i im Frontend ausgibt.

    Ich habe dazu zwei Filter erzeugt: Startdatum und Enddatum mit Input-Feldern, welche mit einem Datepicker bestückt werden können. Die Eingabe einer Uhrzeit in diese Felder ist nicht vorgesehen, der Datepicker bestückt die Felder nur mit dem Datum. Nun zum Problem: Der Datepicker stellt als Uhrzeit offenbar 00:00 ein, so dass ein leeres Inhaltselement zurückgeliefert wird, wenn in die Felder Start- und Enddatum dasselbe Datum eingegeben wird. Die Suche erfolgt dann z.B. von heute 00:00 Uhr bis heute 00:00 Uhr -> leer

    Ich habe versucht für Datum und Uhrzeit zwei getrennte Felder im Katalog anzulegen. Dies funktioniert auch und die beiden Filter arbeiten dann wie vorgesehen (jetzt steht ja 00:00 als Uhrzeit im Datumsfeld drin), allerdings ist meine Listensortierung (Ich sortiere auf das Feld Datum) zwar aufsteigend beim Datum, wenn aber mehrere Veranstaltungen auf den selben Tag fallen, ist die Sortierung nach Uhrzeit aufsteigend nicht mehr gegeben und die Veranstaltungen erscheinen für diesen Tag durcheinandergewürfelt.

    Ich müsste also auf zwei Felder sortieren: Erst nach Datum und dann nach Uhrzeit oder das Problem mit dem Datepicker in den beiden Filtern lösen.

    Grüße,
    Bernhard

    Edit Typos und Ergänzungen
    Zuletzt geändert von Bernhard87; 21.11.2018, 15:22.

  • #2
    Ich kann in der Konfiguration des Kataloges Standard-Sortierfelder vorgeben. Wähle ich die Felder Datum,Uhrzeit aus, so wird die Liste im Backend richtig sortiert. Auf die Frontenddarstellung scheint das aber keinen Einfluss zu haben, dort wird zwar nach Datum, aber nicht nach Uhrzeit sortiert

    Kommentar


    • #3
      Eine Sortierung nach zwei Feldern benötigt zwei Sortierungs-Filter. Einer je Feld.
      Die Standard-Sortierung erlaubt die Auswahl eines Feldes. Zusätzlich kann eine eigene Sortier-Logik in den Modul-Einstellungen hinterlegt werden.
      ---
      Entwickler-Ebene:
      Des Weiteren steht der customOrderHook zur Verfügung, der für jeden Sortierungs-Filter getriggert wird und ganz individuelle Sorterlogiken erlaubt.
      $GLOBALS['CUSTOMCATALOG_HOOKS']['customOrder']
      Zuletzt geändert von Tim; 22.11.2018, 10:17.
      http://www.premium-contao-themes.com

      Kommentar


      • #4
        Vielen Dank Tim, das habe ich heute Vormittag versucht umzusetzen. Die Standard-Sortierung über das Datum erfolgt ja bereits in der Konfiguration des Kataloges. Zusätzlich habe ich eine Filtersammlung "Uhrzeit" erzeugt und das darin enthaltene Filter gleichen Namens in die Listenausgabe eingebunden. Dieses Filter sortiert numerisch auf das Feld "Uhrzeit" und per "hidden" Template übergeben (siehe Screenshot). Leider ist es wirkungslos. Die Standardsortierung nach Datum funktioniert, aber innerhalb der Datumssortierung werden die Datensätze in der Reihenfolge ausgegeben, wie sie angelegt worden sind.
        Angehängte Dateien

        Kommentar


        • #5
          Die Filter (und auch Sortierungen) reagieren auf Ihre Parameter in der Url. Keine Parameter, keine aktiven Filter / Sortierungen. Auf diese Weise lassen sich auch vorgefilterte Seiten bzw. Links erstellen.
          Bitte arbeite erstmal mit den normalen Routinen und dann versuche zu biegen. Schau dir an, wie sich die Url verändert, wenn du den Soriterungs-Filter normal benutzt. Diese Parameter lassen den Filter arbeiten. (gilt alles auch für Sortierungen).

          Die Standard-Sortierung wird bei aktiven manuellen Sortierungen natürlich aufgehoben. Man braucht in jedem Fall zwei Sortierungs-Filter.

          ---

          Am Ende kommt ein Url Konstrukt nach diesem Muster heraus bei Sortierungen: orderby_133=title[asc]&orderby_144=title[desc]
          Das ist ein lokales Beispiel mit zwei Sortierungs-Filter. 1. auf Feld "title", 2. auf Feld "title2"

          Ein verstecktes Feld muss jetzt natürlich die gewünschte Form übermitteln.
          http://www.premium-contao-themes.com

          Kommentar


          • #6
            Das ist ein wertvoller Tipp, vielen Dank. Wenn ich händisch in die URL-Zeile events.html?orderby=uhrzeit[asc] eingebe, wird sofort eine korrekt sortierte Liste ausgegeben. Offenbar wird der Filter also beim Aufruf der Seite gar nicht berücksichtigt. Als URL-Parameter kann man "orderby=uhrzeit[asc]" im Filter leider nicht eingeben. Hmmm... Genau diese Vorfilterung ist es, was ich hier benötige.

            Kommentar


            • #7
              Standardmäßig reagieren die Filter auf gesetzte Werte in der Url. Damit findet ohne Werte natürlich keine Filterung statt, Standardwerte greifen... Es wird auf Eingabe gewartet....
              Wie gesagt, man kann die Seite direkt mit gesetzten Url-Parametern aufrufen. Dann "simuliert" man eine getätigte Eingabe.
              http://www.premium-contao-themes.com

              Kommentar


              • #8
                Zitat von Tim Beitrag anzeigen
                Wie gesagt, man kann die Seite direkt mit gesetzten Url-Parametern aufrufen. Dann "simuliert" man eine getätigte Eingabe.
                Danke, prinzipiell ist es mir jetzt klar. Trotzdem hab ich trotz intensiver Versuche gestern keine automatische Sortierung hinbekommen. Wenn das Filter als <select> Filter mittels Modul direkt auf der Seite mit der Listenausgabe eingebaut war, hat es sofort funktioniert, sobald man die Sortierung von asc nach desc umgestellt hat und umgekehrt. Aber ein für den User unsichtbares, automatisches Filter das bereits beim ersten Seitenaufruf wirkt...nada.

                Allerdings konnte ich das Sortierproblem jetzt dadurch lösen, dass ich im Modul mit der Listenausgabe im Feld "eigene SQL Sortierung" den String "uhrzeit ASC" eingetragen hatte und voila! es ging. Die Sortierung nach Datum erfolgt nach wie vor durch die Einstellung in der Konfiguration des Kataloges. Da die Sortierung nach Uhrzeit nicht umgestellt zu werden braucht, ist diese Methode ausreichend.

                Dennoch würde ich gerne wissen wollen, wie man ein solches automatisches Filter erstellt. Dafür habe ich hier bestimmt noch weitere Anwendungsfälle.
                Zuletzt geändert von Bernhard87; 23.11.2018, 14:09.

                Kommentar


                • #9
                  Der einfachste Weg der Filter-Vorbelegungn ist wie oben erwähnt die Url-Vorbelegung. {{link_url::MEINE-FILTERSEITEN-ID}}?meinFilter=meinWert

                  Beispiele sind ebenfalls im Forum zu finden, dort auch die Experten-Möglichkeiten, wie die Vorbelegung mit Hilfe der Session: https://forum.premium-contao-themes....llungen-merken

                  http://www.premium-contao-themes.com

                  Kommentar


                  • #10
                    Vielen Dank Tim. Ich suche mir hier im Forum am besten noch ein paar Beispiele zusammen. Ist in den CC Demokatalogen auch was dazu vorhanden?

                    Kommentar


                    • #11
                      Zitat von Bernhard87 Beitrag anzeigen
                      Vielen Dank Tim. Ich suche mir hier im Forum am besten noch ein paar Beispiele zusammen. Ist in den CC Demokatalogen auch was dazu vorhanden?
                      Sortierungen sind natürlich auch in den Demos vorhanden. Experten-Funktionen, die auch eigenmächtige Programmierung benötigen, sind nicht Bestandteil der Demos.
                      http://www.premium-contao-themes.com

                      Kommentar

                      Lädt...
                      X