Ankündigung

Einklappen
Keine Ankündigung bisher.

CC: Abfrage ob Feld mit CustomElement befüllt ist

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

  • CC: Abfrage ob Feld mit CustomElement befüllt ist

    Ich habe einen CC mit verschiedenen Feldern – darunter auch ein CE (wiederum nur eine Textarea), welches dupliziert werden kann.
    Wie kann man in einem Detail-Template eine if-Abfrage erstellen, die prüft, ob die Felder innerhalb überhaupt befüllt sind.

    Sowas wie if($entry->field('customelement')->value() != '') funktioniert nicht.

  • #2
    Hi,

    hast du es mal hiermit versucht?
    HTML-Code:
    <?php if($this->field('customelement')->value()): ?><?php endif; ?>
    *********************
    Neu: Kostenloser Contao Installer 3.0
    *********************
    Contao und Erweiterungen in wenigen Sekunden laden, installieren und updaten - ohne Composer oder Contao Manager.

    Kommentar


    • #3
      Wir sind ja innerhalb eines CC Detailtemplates. Dein Aufruf ist ja nur eine andere Schreibweise dessen, was ich schon versucht hab

      Kommentar


      • #4


        Wir haben ähnliche Konstrukte, wo wir keine Lösung gefunden haben.
        Hier am Beispiel von Testemonials innerhalb eines CCs.
        Wir sind hier so vorgegangen, dass wir über eine Checkbox mit Kontrollfunktion (individual_testimonials) die Testimonial-CEs anzeigen lassen.
        Im Leser erscheinen die Testimonials nur, wenn die Checkbox angehakt ist.


        PHP-Code:
        <?php if ($this->field('individual_testimonials')->value()): ?>
        <?php 
        echo $this->field('testimonials')->html(); ?>
        <?php 
        else: ?>{{insert_article::13856}}
        <?php endif ?>
        Ist ein Workaround, aber vielleicht hilft es ja...

        Kommentar


        • #5
          Hach, das ist auch nur Down & Dirty... da kriegt mein innerer Monk direkt graue Haare xD
          Es muss doch irgendwie möglich sein, zu prüfen, ob da Inhalt vorhanden ist oder nicht.

          Kommentar


          • #6
            Willst du mit der If Abfrage denn andere Inhalte innerhalb deines CCs steuern?
            Andernfalls würde die If Abfrage ja auch im CE-Template deiner Text Area funktionieren.

            Hach, das ist auch nur Down & Dirty.
            Yepp, deshalb habe ich schon keine Haare mehr...

            Kommentar


            • #7
              Zitat von eblick Beitrag anzeigen
              Willst du mit der If Abfrage denn andere Inhalte innerhalb deines CCs steuern?
              Andernfalls würde die If Abfrage ja auch im CE-Template deiner Text Area funktionieren.
              Eigentlich geht's nur darum den Kram auszugeben, wenn auch wirklich was drin steht. Und da ist leider noch Gedöns drum herum.

              Kommentar


              • #8
                Down & Dirty Variante 2: -> So lange Javascript drauf werfen, bis das Problem nicht mehr zu sehen ist!

                Im CC Template:

                Code:
                function isEmpty( el ){
                   return !$.trim(el.html())
                }
                if (isEmpty($('#element'))) {
                   // do stuff
                }

                Kommentar


                • #9
                  LOL

                  Das Gedöns sollte sich im CE Template doch einfach mit der If-Abfrage eliminieren können.


                  PHP-Code:
                  <?php foreach($this->group('kundenstimmen') as $i => $fields): ?>
                  <?php 
                  if ($this->field('testimonial_text#'.$i)->value()): ?>
                  <div class="column col_6 mb-xxs">
                  <div class="ce_testimonial block ce_testimonial_version7">
                  <div class="ce_testimonial_inside">
                  <div class="text"><div class="text_inside"><p><?php echo $this->field('testimonial_text#'.$i)->value(); ?></p></div></div>
                  <div class="info">
                  <div class="name">— <?php echo $this->field('testimonial_customer#'.$i)->value(); ?></div>
                  <div class="additional"></div>
                  </div>
                  </div>
                  </div>
                  </div>
                  <?php endif; ?>
                  <?php 
                  endforeach ?>
                  </div>

                  Kommentar


                  • #10
                    Genau das geht hier leider nicht, weil da noch ne Menge anderer Kram drum herum platziert werden muss, den ich dann auch ausblenden muss.

                    Kommentar


                    • #11
                      Moin,

                      meine Fragenstellung erscheint mir in diesem Thread ganz gut aufgehoben.

                      Aufgabenstellung: Abfrage, ob ein CE-Element befüllt ist oder nicht
                      Wenn ja -> gib es aus
                      Wenn nein -> gib es nicht aus, aber gib auch das HTML-Markup innerhalb der if-Abfrage nicht aus

                      Beispiel CC-Ausgabetemplate:
                      PHP-Code:
                            <?php if($this->field('facebook')->value()): ?>
                              <a class="facebook" href="<?= $entry->field('facebook')->value(); ?>"><?= $entry->field('facebook')->value(); ?></a>
                            <?php endif; ?>

                      <?= $entry->field('facebook')->value(); ?> wird tatsächlich nur ausgegeben, wenn es vorhanden ist, aber wenn ich das durch einen anderen Text oder durch ein Icon ersetzen möchte, wird alles, was sonst noch innerhalb des Links steht, also <a class="facebook" href=""></a> auch dann ausgegeben, wenn kein Link vorhanden ist, steht also bei jedem Eintrag in der Liste. Ist das so oder übersehe ich etwas?

                      Beim Inhaltselement hab ich übrigens sowohl customelement_attr_default als auch customelement_attr_value_only probiert, macht aber offenbar keinen Unterschied.
                      Zuletzt geändert von bibib; 14.03.2024, 08:54.

                      Kommentar


                      • #12
                        Zitat von bibib Beitrag anzeigen
                        Moin,

                        meine Fragenstellung erscheint mir in diesem Thread ganz gut aufgehoben.

                        Aufgabenstellung: Abfrage, ob ein CE-Element befüllt ist oder nicht
                        Wenn ja -> gib es aus
                        Wenn nein -> gib es nicht aus, aber gib auch das HTML-Markup innerhalb der if-Abfrage nicht aus

                        Beispiel CC-Ausgabetemplate:
                        PHP-Code:
                        <?php if($this->field('facebook')->value()): ?>
                        <a class="facebook" href="<?= $entry->field('facebook')->value(); ?>"><?= $entry->field('facebook')->value(); ?></a>
                        <?php endif; ?>

                        <?= $entry->field('facebook')->value(); ?> wird tatsächlich nur ausgegeben, wenn es vorhanden ist, aber wenn ich das durch einen anderen Text oder durch ein Icon ersetzen möchte, wird alles, was sonst noch innerhalb des Links steht, also <a class="facebook" href=""></a> auch dann ausgegeben, wenn kein Link vorhanden ist, steht also bei jedem Eintrag in der Liste. Ist das so oder übersehe ich etwas?

                        Beim Inhaltselement hab ich übrigens sowohl customelement_attr_default als auch customelement_attr_value_only probiert, macht aber offenbar keinen Unterschied.
                        Die Felder in einem CustomElement-Widget können nicht im CC Template geprüft werden (dort kommt nur rein, ob das gesamte CE-Widget befüllt ist oder nicht - nicht was darin im Einzelnen steht).
                        Die CE-Felder werden in dem Ausgabe Templates des CEs abgearbeitet: Einstellungen des CEs -> Ausgabe-Template.
                        http://www.premium-contao-themes.com

                        Kommentar


                        • #13
                          Zitat von Tim Beitrag anzeigen
                          Die Felder in einem CustomElement-Widget können nicht im CC Template geprüft werden (dort kommt nur rein, ob das gesamte CE-Widget befüllt ist oder nicht - nicht was darin im Einzelnen steht).
                          Okay - danke.

                          Zitat von Tim Beitrag anzeigen
                          Die CE-Felder werden in dem Ausgabe Templates des CEs abgearbeitet: Einstellungen des CEs -> Ausgabe-Template.
                          Aber ist das nicht der Fall, wenn ich eben bei diesem CE als Ausgabetemplate das customelement_att_value_only verwende?

                          PHP-Code:

                          <?php if($this->value): ?>
                            <?php echo $this->value?>
                          <?php 
                          endif; ?>

                          Oder bedeutet das, dass ich das gesamte Linkkonstrukt in das CE-Ausgabetemplate einbauen muss?
                          Zuletzt geändert von bibib; 14.03.2024, 09:13.

                          Kommentar


                          • #14
                            Zitat von bibib Beitrag anzeigen
                            Okay - danke.


                            Aber ist das nicht der Fall, wenn ich eben bei diesem CE als Ausgabetemplate das customelement_att_value_only verwende?

                            PHP-Code:

                            <?php if($this->value): ?>
                            <?php 
                            echo $this->value?>
                            <?php 
                            endif; ?>
                            Nicht das Attribut-Template, sondern das Ausgabe-Templates des gesamten Customelements: customelement_. -> In den Einstellungen des CEs unter Meine Inhaltselemente Bitte genau lesen.
                            http://www.premium-contao-themes.com

                            Kommentar


                            • #15
                              Zitat von Tim Beitrag anzeigen

                              Nicht das Attribut-Template, sondern das Ausgabe-Templates des gesamten Customelements: customelement_. -> In den Einstellungen des CEs unter Meine Inhaltselemente Bitte genau lesen.
                              Okay, gefunden, du meinst customelement_simple oder customelement_grouped. Ja, da ist eine Abfrage drinnen, aber werden diese Templates nicht dann verwendet, wenn ich ein CE als Inhaltselement oder als Modul bereitstelle?

                              However, ich geb's jetzt auf und vereinfache die Sache ... danke trotzdem.

                              Kommentar

                              Lädt...
                              X