Ankündigung

Einklappen
Keine Ankündigung bisher.

Leere Aufzählung ausblenden

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

  • Leere Aufzählung ausblenden

    Hallo,

    ich habe ein Inhaltselement mit mehreren Feldern vom Typ Aufzählung. Gibt es eine Möglichkeit, das Feld im Frontend auszublenden, wenn es keine Listeneinträge besitzt? Im besten Fall über ein count-Attribut oder ähnliches.

    Eine Abfrage über die Länge des ausgegebenen Werts ($this->value) funktioniert nicht, da diese selbst bei leerer Liste größer 0 ist.

  • #2

    if($this->field('meineAufzaehlung')->value()) bzw. innerhalb der entries Schleife in einem normalen CC Template:

    if($entry->field('meineAufzaehlung')->value())

    Siehe die Demo Templates und auch http://forum.premium-contao-themes.c...late-variablen
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Vielen Dank für deine Antwort. Leider funktioniert genau das nicht, da $field->value() nicht NULL sondern das Blob als String (siehe Screenshot) ausgibt. Das Blob ist auch genau so in der Datenbank vorzufinden.

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

Name: customcatalog_list.png
Ansichten: 68
Größe: 4,2 KB
ID: 3957

      Ich nutze den Palettenwechsler, kann das etwas damit zu tun haben?

      Hier noch das dazugehörige Listenfeld im Contao-Backend.
      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: customcatalog_list_backend.png
Ansichten: 68
Größe: 5,3 KB
ID: 3958

      Kommentar


      • #4
        Ah ok. Kenne ich aus manchen Contao Versionen und Contaos Dateiwähler. Der speichert in machen Installationen partous nicht NULL sondern einen leeren Array serialisiert als String

        Dann teste vorab ob der Array leer ist.

        $arr = deserialize($entry->field('meineAufzählung')->value());
        http://www.premium-contao-themes.com

        Kommentar


        • #5
          Hi Tim, muss hier diesen Thread nochmal hochholen bzw. nachhaken, da ich gerade vor dem selben Problem mit dem Attribut Aufzählung stehe... Wenn ein CC-Eintrag gespeichert wird, steht in der db dann immer ein BLOB und kann somit nicht mittels:

          if($entry->field('meineAufzaehlung')->value())

          im Leser ausgeblendet werden.

          Mein Versuch, es so zu schreiben führt zu einer Fehlermeldung...

          PHP-Code:
           <?php if($arr deserialize($this->field('sportskills')->value()) ): ?>
          <div class="single-features"><h4>Sports/Artistic</h4><?php echo $this->field('sportskills')->html(); ?></div>
          <?php endif; ?>

          Kommentar


          • #6
            Ja, das ist falsche Syntax.

            Code:
            <?php
            $arr = \Contao\StringUtil::deserialize($this->field('sportskills')->value());
            if( !is_array($arr) )
            {
            $arr = implode(',',$arr);
            }
            $arr = array_filter($arr);
            
            ?>
            <?php if( !empty($arr) ): ?>
            <div class="single-features"><h4>Sports/Artistic</h4><?php echo $this->field('sportskills')->html(); ?></div>
            <?php endif; ?>
            http://www.premium-contao-themes.com

            Kommentar


            • #7
              SUPER, - vielen DANK!!!

              Kommentar

              Lädt...
              X