Ankündigung

Einklappen
Keine Ankündigung bisher.

Sortieren Auswahl/Select - Filter

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sortieren Auswahl/Select - Filter

    Hallo,

    ich habe ein Feld "Auswahl, einfach (Select/Radio) angelegt. Wie bekomme ich es hin, dass die angelegt Reihenfolge auch in den Filtern / Frontend-Anzeige beibehalten wird? Derzeit scheint es einfach "zusammengewürfelt".

    Danke,
    Misio



  • #2
    Die Reihenfolge entspricht standardmäßig der Reihenfolge der gesetzten Einträge bzw. deren Werte.
    Jeder Filter hat eine eigene Template-Auswahl. Im Template kann man die Ausgabe frei umsortieren. Über die Suche hier im Forum findet man gut Beispiele dazu: https://forum.premium-contao-themes....=7900#post7900
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Hi Tim,

      ich hab es so gemacht, wie in dem Post, den Du oben angegeben hast. Die Sortierung an sich klappt auch. Allerdings habe ich wie der User in diesem Post Probleme mit dem Eintrag "Filter zurücksetzen hinzufügen". Dieser erscheint jetzt nämlich doppelt und zudem manchmal ganz oben und ganz unten und manchmal doppelt ganz oben. Ist aber immer 2fach vorhanden.

      Woran liegt das?

      Gerade nochmal getestet: Das unset funktioniert anscheinend nicht. Die ursprüngliche leere Option wird nicht entfernt.

      PHP-Code:
      unset($this->options[0]); 
      Danke und Grüße,
      Misio


      PHP-Code:
      <?php
      /**
       * Select/Radio-Button filter template
       */
      ?>

      <?php
      // leere option abgreifen
      $arrBlankOption $this->options[0];
      // leere option entfernen
      unset($this->options[0]);

      $arrOptions = array();
      foreach(
      $this->options as $option)
      {
      $k standardize($option['label']);
      $arrOptions[$k] = $option;
      }
      ksort($arrOptions);

       
      // leere Option wieder einsetzen
      array_insert($arrOptions,0,array($arrBlankOption));
      ?>

      <?php if($this->radio): ?>
      <div <?php echo $this->cssID?> class="widget <?php echo $this->class?> block">
      <fieldset class="radio_container">
          <?php if($this->label): ?><legend><?php echo $this->label?></legend><?php endif; ?>
          <?php foreach($this->options as $option): ?>
          <div>
              <input type="radio" class="radio" name="<?php echo $this->name?>" value="<?php echo $option['value']; ?><?php if($option['selected']):?>checked<?php endif;?> ><?php echo $option['label']; ?> <?php if($option['id']): ?>(<?php echo $this->countValue($option['value']); ?>)<?php endif; ?>
              <label id="lbl_<?php echo $option['id']; ?>" for="opt_<?php echo $option['id']; ?>"><?php echo $option['label']; ?></label>
          </div>
          <?php endforeach; ?>
          <?php if($this->description): ?><div class="description"><?php echo $this->description?></div><?php endif; ?>
      </fieldset>
      <?php if($this->description): ?><div class="description"><?php echo $this->description?></div><?php endif; ?>    
      </div>
      <?php else: ?>
      <div <?php echo $this->cssID?> class="widget <?php echo $this->class?> block">


      <fieldset class="select_container">
        <?php if($this->label): ?><legend><?php echo $this->label?></legend><?php endif; ?>
        <select name="<?php echo $this->name?>">
        <?php foreach($arrOptions as $option): ?>
        <option value="<?php echo $option['value']; ?>"<?php if($option['selected']):?>selected<?php endif;?>><?php echo $option['label']; ?> <?php if($option['id']): ?>(<?php echo $this->countValue($option['value']); ?>)<?php endif; ?></option>
        <?php endforeach; ?>
        </select>
      </fieldset>
      <?php if($this->description): ?><div class="description"><?php echo $this->description?></div><?php endif; ?>
      </div>
        
        
      <?php endif; ?>
      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Bildschirmfoto 2019-02-05 um 13.47.52.png
Ansichten: 135
Größe: 157,9 KB
ID: 14277
      Zuletzt geändert von Misio; 05.02.2019, 14:05.

      Kommentar


      • #4
        Mach doch generell ohne Leere Option über die Einstellung des Filters und mach eine eigene Leere Option im Template.
        http://www.premium-contao-themes.com

        Kommentar


        • #5
          Dann muss ich aber für jeden Filter ein eigenes Template machen oder Abfangen, welcher Filter gerade "gebaut" wird, wenn ich pro Filter einen eigenen Text in der Liste haben will. Ich hab es jetzt über eine Schleife gelöst und das nicht-funktionierende unset sicherheitshalber raus genommen:

          PHP-Code:
          <?php
          // leere option abgreifen
          $arrBlankOption $this->options[0];
          $arrBlankOption['label'] = "00 ".$arrBlankOption['label'];
          // leere option entfernen
          //unset($this->options[0]);

          $arrOptions = array();
          $i=0;
          foreach(
          $this->options as $option)
          {
              if (
          $i != 0){
                  
          $k standardize($option['label']);
                  
          $arrOptions[$k] = $option;
              }
              
          $i++;
          }
          ksort($arrOptions);

           
          // leere Option wieder einsetzen
          array_insert($arrOptions,0,array($arrBlankOption));
          ?>

          Trotzdem: Warum funktioniert das unset nicht? Irgendeine Idee?

          Kommentar


          • #6
            Zitat von Tim Beitrag anzeigen
            Die Reihenfolge entspricht standardmäßig der Reihenfolge der gesetzten Einträge bzw. deren Werte.
            Jeder Filter hat eine eigene Template-Auswahl. Im Template kann man die Ausgabe frei umsortieren. Über die Suche hier im Forum findet man gut Beispiele dazu: https://forum.premium-contao-themes....=7900#post7900
            Ich habe gerade genau das Problem in contao 4.9. => Inhaltselemente Version 4.3.4
            Scheinbar ein Bug, denn wenn ich einen Kontrollausgabe mache erhalte ich dieses:

            Bild3

            Obwohl es im Backend so: (Bild1)


            Und in der DB-Tabelle: tl_pct_customelement_tags so aussieht: (Bild2)


            Also wird die Ausgabe hier weder nach dem Sortier-Index, noch nach dem Tabellen-Index sortiert.
            Zuletzt geändert von rethus; 03.06.2021, 18:26.

            Kommentar


            • #7
              Die Ausgabe erfolgt nach Auffindung der Werte, wie sie in den Einträgen selbst genutzt werden. Nicht nach der Quelltabelle.
              Die Ausgabe kann im Template sortiert werden, dafür haben wir Beispiel-Templates im Vorlagen-Pool.
              http://www.premium-contao-themes.com

              Kommentar


              • #8
                In den Einträgen selbst (Siehe Bild 1) sind sie auch in exakt der Reihenfolge wie ich sie bräuchte... oder meinst du etwas anderes, mit "Ausgabe erfolgt nach Auffindung der Werte"?
                Ich kann mir die Reihenfolge die mir momentan letztendlich angezeigt wird nicht erklären.
                Zuletzt geändert von rethus; 08.06.2021, 16:44.

                Kommentar


                • #9
                  Die Tags sortiert nach ihrem Titel ausgeben: https://forum.premium-contao-themes....2650#post22650
                  http://www.premium-contao-themes.com

                  Kommentar

                  Lädt...
                  X