Ankündigung

Einklappen
Keine Ankündigung bisher.

Tag-Bezeichnung in Select Filter Template mit Radio Button

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

  • Tag-Bezeichnung in Select Filter Template mit Radio Button

    Nach langem mal wieder eine kleine Herausforderung ;-)

    Gegeben ist ein Tag-Feld (Mehrfachauswahl).

    Dieses wird als Filter für eine CC-Liste verwendet.

    Ich verwende hier ein Select-Filter Template mit Anzeige als Radio-Button Menü und sofortigem Aktualisieren.

    Das Template gibt ja bei Tag-Feldern mit Mehrfachauswahl bekanntlich nur Ids aus.

    Jetzt würde ich aber gerne die Tag-Bezeichnungen aus der DB ziehen anhand dieses älteren Vorschlags:

    PHP-Code:
    $arrTags deserialize($entry->field('tag-name')->value()); // array (ids)
    $objTags =  \Database::getInstance()->prepare("SELECT * FROM tl_pct_customelement_tags WHERE id IN(".implode(',',$arrTags).")")
    ->
    limit(1)
    ->
    execute();

    echo 
    $objTags->title

    Wodurch muss das ($entry->field('tag-name')->value()) hier ersetzt werden um das Array korrekt aus den "Options" zu bilden?

    Oder gibt es evtl. eine andere sinnvolle Lösung um an den Tag title zu kommen?

  • #2
    Der Wert ist die ID aber das Labels sollte doch der lesbare Tag sein. Dem ist nicht so?
    Die Tags nutzen den gleichen Template-Stamm, auch wenn es strenggenommen unterschiedliche Templates sind.

    Mhh... also bei mir passt das alles prima zusammen.

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

Name: screenshot_5002.jpg
Ansichten: 68
Größe: 11,2 KB
ID: 16774

    filter_select template.

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

Name: screenshot_5000.jpg
Ansichten: 66
Größe: 147,9 KB
ID: 16775
    Zuletzt geändert von Tim; 29.10.2019, 08:32.
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Ok, jetzt hats "g'schnackelt" :-)
      Ich habe hier eine andere Darstellung vor -> keine Select Liste sondern modifizierte Radio-Buttons. Die sind so wie normale Buttons clickbar und fühlen sich wie eine Navigation an.
      Die Labels bekommt man nur über den Filtertyp Tags und nicht, wie in meinem Versuch, mit Select/Radio.

      Bildschirmfoto 2019-10-29 um 19.46.25.png

      Dazu musste ich aber nun die if this-radio Schleife entfernen, das es diese Option beim Filtertyp Tags nicht gibt.

      Zusammengefasst also die Lösung:

      1. Filtertyp Tags (nicht Select/Radio) -> dann werden auch die Tag Namen verwendet
      2. Template customcatalog_filter_select.html gepimpt ohne If-Radio
      3. ein paar kleine CSS Modifikationen....

      Code:
       <?php
        /**
         * Radio-Button filter template for Tag-Buttons
         */
        ?>
         
         
        <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;?> >
        <label id="lbl_<?php echo $option['id']; ?>" for="opt_<?php echo $option['id']; ?>" <?php if($option['selected']):?>class="checked"<?php endif;?>><?php echo $option['label']; ?></label>
        </div>
        <?php endforeach; ?>
        </fieldset>
        <?php if($this->description): ?><div class="description"><?php echo $this->description; ?></div><?php endif; ?> 
        </div>

      Code:
       form .glossar_tags input.radio:hover {
            cursor: pointer;
        }
        form .glossar_tags .radio_container > div:hover label{
        background: #aaa;
        color: #fff;
        }
        form .glossar_tags .checkbox_container, form .radio_container > div {
         
            position: relative;
        }
         
        form .glossar_tags input {
            -webkit-appearance: none;
            position: absolute;
            top: 0;
            left: 0;
            background: none;
        }

      Kommentar


      • #4
        Super. Soll ich es in den Vorlagen-Pool verschieben?
        http://www.premium-contao-themes.com

        Kommentar


        • #5
          Wenn du auch der Ansicht bist, dass es korrekt ist und andere davon profitieren, gerne!

          Kommentar


          • #6
            Um die Label noch klickbar zu machen habe ich dem Input eine ID verpasst:

            HTML-Code:
            <input id="opt_ctrl_<?php echo $this->name; ?>_<?php echo $option['value']; ?>" type="radio" class="radio" name="<?php echo $this->name; ?>" value="<?php echo $option['value']; ?>" <?php if($option['selected']):?>checked<?php endif;?> >
            So lässt sich der Filter dann auch wie eine Navigation ohne sichtbare Inputs stylen.

            Kommentar

            Lädt...
            X