Ankündigung

Einklappen
Keine Ankündigung bisher.

Filtereinstellungen merken

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

  • Filtereinstellungen merken

    Hallo,

    Ist es möglich, sich die Filtereinstellungen zu „merken”?

    Ich filtere eine Liste von Elementen nach zwei Kriterien. Daraufhin bekomme ich eine gefilterte Liste. Klicke ich nun auf ein Element für die Detailansicht verliere ich die Filtereinstellungen. Ich möchte aber auf der Detailansicht ebenfalls eine Liste anzeigen, welche sich auf diesen Filter bezieht.

    Ich habe in der Kopfleiste den Filter immer eingeblendet und auch da sieht man, dass der Filter zurückgesetzt wird, sobald ich in die Detailansicht wechsle.

    Gibt es eine Möglichkeit das Filterergebnis zum Beispiel per Session „mitzuschleifen” und von überall darauf zuzugreifen?

  • #2
    Ja, das ist schon advanced. Sehr schön.
    CC hat alles an Bord. Filter werden standardmäßig schon für weiteren Nutzen in der Session abgelegt - ich nutz das selbst gern.
    Der Session Key ist in $GLOBALS['PCT_CUSTOMCATALOG']['filterSessionName'] definiert. Standardmäßig "customcatalogfilter"

    PHP-Code:
    print_r (\Session::getInstance()->get($GLOBALS['PCT_CUSTOMCATALOG']['filterSessionName'])); 

    Aktive url Parameter hält CC per Insertag bereit.
    PHP-Code:
    {{customcatalog_filterurl::MY-CC-TABLE}} 
    ---
    Natürlich kannst du auch deine eigene Logik setzen und später z.B. die Url selbst beschreiben oder die Filter-Session von CC. Jeder Filter schaut auch in der Session.

    Schau dir hier mal die Filter-Klasse an (Filter.php) und die Methoden: getValueFromSession, addValueToSession
    Zuletzt geändert von Tim; 06.12.2016, 14:04.
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Ja, an diesem Punkt war ich schon. Leider gibt mir ein var_dump schon direkt auf der Listenseite

      PHP-Code:
      array(1) { [3]=> array(1) { ["CURRENT"]=> array(2) { ["raw"]=> array(2) { ["typ"]=> array(1) { [0]=> NULL } ["lage"]=> array(1) { [0]=> NULL } } ["url"]=> string(0"" } } } 
      zurück. Ich habe auch nochmal den aktuellen Stand unter „Meine Bestellungen” herunter geladen, aber auch danach bekomme ich nur leere Filter in der Session zurück. Der inserttag gibt bei mir gar nichts zurück - es wäre als ob ich den Tag überhaupt nicht ins Template geschrieben hätte.

      Kommentar


      • #4
        Sieht richtig aus. Was fehlt? Das sind deine letzten gesetzten Filter, aktuell sind keine GET parameter in der url, die ebenfalls filtern.

        Du kannst natürlich das ganze selbst beschreiben, damit es drin steht und CC reagiert dann darauf z.B. um Filter anzuwenden ohne GET Parameter zu fahren.
        Zuletzt geändert von Tim; 06.12.2016, 14:52.
        http://www.premium-contao-themes.com

        Kommentar


        • #5
          Müsste nicht anstatt ["typ"]=> array(1) { [0]=> NULL } irgend etwas in der Art ["typ"]=> array(1) { [0]=> 'ausgewählte Filteroption' } stehen? Ansonsten weiß ich ja nur, dass der Filter gesetzt ist, aber nicht welche Filteroption gewählt ist.
          • addValueToSession wird bei mir überhaupt nicht aufgerufen, ein echo oder die() kommt im Frontend nicht an. Auch wird in der IDE nur ein Treffer für addValueToSession beim Suchen in allen Dateien gefunden und zwar jener aus der Filter.php.
          • getValueFromSession wird mehrfach aufgerufen gibt aber ausschließlich das leere Array von Zeile 288 zurück (in der Bedingung, die prüft ob $arrSession gesetzt ist, ein Array ist uws.)
          Die Datei in der zip ist vom 01.12.2016 5:02 Uhr falls das hilft.

          Kommentar


          • #6
            Speicher doch einfach deine filter-url in der Session und gut ist.

            ---
            Eine kurze Exkursion:

            addValueToSession wird bei mir überhaupt nicht aufgerufen, ein echo oder die() kommt im Frontend nicht an.
            -> richtig, solls auch nicht. CC beschreibt die Session ohne diese Methode. Die Session ist eine Globale. Die Methode steht für eigene Entwicklungen bereit.

            addValueToSession beim Suchen in allen Dateien gefunden und zwar jener aus der Filter.php.
            -> sehr gut Die Filter Klasse vererbt an ALLE Filter , damit hat jeder Filter Zugang. OOP
            getValueFromSession wird mehrfach aufgerufen gibt aber ausschließlich das leere Array von Zeile 288 zurück (in der Bedingung, die prüft ob $arrSession gesetzt ist, ein Array ist uws.)
            -> nicht nur mehrfach, sondern für JEDEN Filter. Es könnte ja für jeden Filter ein Wert drin stehen, der ggf. berücksichtigt werden soll.

            Hauptmethode. FILTER>getValue() (Filter.php)


            Zuletzt geändert von Tim; 06.12.2016, 15:29.
            http://www.premium-contao-themes.com

            Kommentar


            • #7
              Hier ein kleines Beispiel für die Tags.

              Direkt in der initconfig oder localconfig, einen Tags Filter vorbelegen per Session.
              Die Listen reagieren dann direkt darauf, wenn dort der passende Tags-Filter eingeklinkt ist.

              Mein Tags-Feld/Filter heisst "tags_werkzeuge" und soll den Wert "Säge" vorbelegen.


              PHP-Code:
              $objCC = \CustomCatalog::findByTableName('cc_test');

              $arrFilterSession[$objCC->id]['FILTERS']['tags_werkzeuge'] = array('Säge');

              \
              Session::getInstance()->set($GLOBALS['PCT_CUSTOMCATALOG']['filterSessionName'],$arrFilterSession); 
              http://www.premium-contao-themes.com

              Kommentar

              Lädt...
              X