Ankündigung

Einklappen
Keine Ankündigung bisher.

Individueller Filter mit geordneten Fieldsets -> css Klasse nicht im Filter Template

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

  • Individueller Filter mit geordneten Fieldsets -> css Klasse nicht im Filter Template

    Ich möchte eine Filterdarstellung über das Template optimieren.
    Hier sollen bestimmte Attribute jeweils ein eigenes Fieldset erhalten.

    Dazu habe ich das form_customcatalog template entsprechend vorbereitet.

    Code:
        <fieldset class="hauptfilter">
        <?php foreach($this->filters as $name => $filter): ?>
        <?php if(strpos($filter->class,"hauptfilter")!==false)echo $filter->html(); ?>
        <?php endforeach; ?>
         </fieldset>
         <fieldset class="ausstattung">
        <?php foreach($this->filters as $name => $filter): ?>
        <?php if(strpos($filter->class,"ausstattung")!==false)echo $filter->html(); ?>
        <?php endforeach; ?>
         </fieldset>
    Ich wollte hierzu jedem Filter eine css Klasse vergeben z.b. Hauptfilter, Ausstattung, Zubehör o.ä..

    Diese css Klassen werden aber nicht im Template ausgegeben, sondern nur z.b. "filter attribut select odd first"

    Wozu gibt es die Erfassungsmöglichkeit der CSS Klasse im Filter, wenn sie nicht ausgegeben wird?
    Gibt es einen anderen Weg oder kann künftig CSS Klasse und ID genutzt werden?



  • #2
    Die Filter-CSS-Klasse kommt in das jeweilige Filter-Template. Du bist bereits im Filter-Modul-Template.

    Ich würde hier Fallunterscheidung auf Filter-Namensbasis machen oder die Filter direkt über den Namen ausgeben lassen, wie man es aus CE Templates mit den Feldern kennt.

    Code:
    <fieldset class="hauptfilter">
    <?= $this->filters['meinFilter1']->html(); ?>
    <?= $this->filters['meinFilter2']->html(); ?>
    </fieldset>
    <fieldset class="ausstattung">
    <?= $this->filters['meinFilter3']->html(); ?>
    <?= $this->filters['meinFilter4']->html(); ?> ​
    </fieldset>
    Zuletzt geändert von Tim; 29.01.2021, 07:06.
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Ja, der Gedanke mit den Namen kam mir auch schon, allerdings wollte ich nicht jeden Filter einzeln ins Template aufnehmen.
      Deshalb hatte ich die Unterscheidung im Namen ergänzt "Hauptfilter" und "Ausstattung" (siehe Screenshot) und die If Abfrage auf den Namen laufen lassen.

      Code:
      <?php if(strpos($filter->name,"hauptfilter")!==false)echo $filter->html(); ?>
      Problem hierbei: Beim Rangefilter gibt er die Namensergänzung "Hauptfilter" aus, bei den Checkboxen nicht (screenshot2)


      Ist irgendwie inkonsistent oder?

      Kommentar


      • #4
        Trenne doch nach Filtersets. Dann haben deine Filter jeweils unterschiedliche pids

        Der Filter-Datensatz ist in der Variable "filter" drin.
        Code:
         <?php foreach($this->filters as $name => $filter): ?>  
        <?php var_dump($filter->filter); ?>  
        <?php endforeach; ?>
        Code:
          
         <fieldset class="hauptfilter">
        <?php foreach($this->filters as $name => $filter): ?>      
        <?php
        $arr = StringUtil::deserialize($filter->filter->cssID);  // cssID Feld
        $class = $arr[1]; // css klasse
        ?>  
        <?php if( strpos($class,"hauptfilter")!==false ): ?>
        <?= $filter->html(); ?>
        <?php endif; ?>
        <?php endforeach; ?>
        </fieldset>
        Zuletzt geändert von Tim; 29.01.2021, 09:18.
        http://www.premium-contao-themes.com

        Kommentar


        • #5
          Trenne doch nach Filtersets. Dann haben deine Filter jeweils unterschiedliche pids
          auch ne Idee

          würde mich aber dennoch interessieren, weshalb hier die Template-Ausgabe nicht den neuen Namen übernimmt....

          Kommentar


          • #6
            Der Filtername ist nur im Backend quasi ein Titel. Der hier technisch verwendete Filtername wird aus dem alias des Attributes gebildet, weil er eindeutig sein muss als URL-Paramter.
            http://www.premium-contao-themes.com

            Kommentar


            • #7
              Jetzt bin ich es doch nochmal....
              Also auch die Variante mit den beiden Filtersets klappt hier nicht, zumindest, wenn ich beide Filtersets einem Filter verwende. Dann verändert sich an der ID nichts und ich kann die Filtervarianten nicht auseinanderhalten. Wenn ich zwei separate Filter verwende, klappt es aber nicht mit den Abhängigkeiten, oder?


              Dein Code über die cssID funktioniert aber wie gewünscht. Jetzt habe ich ein Filtermodul und kann über individuelle CSS Klassen getrennte Fieldsets erstellen und layouten.

              Merci

              Kommentar


              • #8
                Es klappt auch mit der Filterset-Variante. Die PIDs der Filter ist die Trennung.
                http://www.premium-contao-themes.com

                Kommentar

                Lädt...
                X