Katalog-Link zur Detailseite nur unter bestimmten Bedingungen anzeigen

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Ignatz
    Contao-Fan
    • 22.10.2009
    • 301

    #1

    Katalog-Link zur Detailseite nur unter bestimmten Bedingungen anzeigen

    Hallo,

    ich habe im Katalog ein Feld "Beschreibung" als Longtext angelegt. Auf diesem Feld liegt auch der Link zur Detailseite.
    In der Katalogliste wird der Link als Symbol dargestellt und zwar bei jedem Datensatz, unabhängig davon, ob das Feld "Beschreibung" ausgefüllt wurde oder nicht.

    Mein Wunsch: Dieser Link (bzw. das Symbol) soll nur angezeigt werden, wenn im Feld "Beschreibung" tatsächlich etwas eingetragen ist. Also nur bei den Katalog-Datensätzen, für die eine Beschreibung vorliegt.
    Die anderen Datensätze sollen zwar gelistet, aber nicht verlinkt werden, da auf der Detailseite nur die "Beschreibung" angezeigt werden soll.

    Ich hoffe, das ist verständlich. Für die Darstellung im Backend gibt es ja diese Kontrollfeld-Option. Aber eben nur für das Backend.

    Kann man das irgendwie für das Frontend lösen? Eventuell mit einem versteckten Feld?

    Gruß,
    Ignatz
  • MacKP
    Contao-Yoda
    • 15.06.2009
    • 13315

    #2
    Hallo Ignatz,
    das ist eigentlich ganz einfach. Du lässt in der Liste auch die Beschreibung ausgeben. Prüfst dann in der Liste im Template ob da ein Wert drinn ist. Wenn nicht, dann eben kein Link, wenn ja, dann mit LInk ausgeben. Im Template gibst du dann natürlich die Beschreibung nicht aus, sonst wäre die ja da schon zu sehen ;-)

    Hier noch ein Hinweis wie so eine Abfrage aussehen kann: http://de.contaowiki.org/Catalog_Tem..._vorhanden_ist

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

    Kommentar

    • Ignatz
      Contao-Fan
      • 22.10.2009
      • 301

      #3
      Hallo MacKP,

      soweit ist das verständlich. Nur leider haperts mit PHP ein wenig.
      Hier ein Auszug aus meinem catalog_simpletable.html5:
      PHP-Code:
      <?php foreach ($entry['data'] as $field=>$data): ?>
          <?php if($field=='bericht' && ($entry['data']['bericht']['value'])==0): ?>
          <td class="field bericht">&nbsp;</td>
          <?php elseif(!in_array($field, array('catalog_name','parentJumpTo'))): ?>
          <td class="field <?php echo $field; ?>"><?php if (strlen($data['value'])): ?>
          <?php echo $data['value']; ?>
          <?php endif; ?>
          </td>
          <?php endif; ?>
        <?php endforeach; ?>
      Die Abfrage:
      PHP-Code:
      ($entry['data']['bericht']['value'])==0) 
      
      Scheint noch nicht zu stimmen. Wie kann ich prüfen, ob der Wert leer ist?

      Ignatz

      Kommentar

      • MacKP
        Contao-Yoda
        • 15.06.2009
        • 13315

        #4
        Hallo Ignatz,
        versuchs mal mit
        Code:
        =='';
        (Das sind 2 ' )

        Viele Grüße
        Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
        [Arbeitet bei -> Paus Design & Medien]
        "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

        Kommentar

        • Ignatz
          Contao-Fan
          • 22.10.2009
          • 301

          #5
          Hallo MacKP,

          das habe ich auch schon versucht, trotzdem wird der Link zur leeren Detailseite immer ausgegeben.
          Schätze, der Link steht im [value] immer drin, wenn ich sage, er soll dieses Feld mit der Detailseite verlinken. Dann wäre das [value] ja nicht leer, oder?
          Und ich bräuchte eine andere Abfrage ...

          Ignatz

          Kommentar

          • Ignatz
            Contao-Fan
            • 22.10.2009
            • 301

            #6
            Hallo MacKP,

            ich habe es lösen können. Meine Vermutung, dass im ['value'] des Feldes "Bericht" zumindest immer der Link liegt und er deshalb auch nicht leer ist, hat mich darauf gebracht.

            Die Abfrage sieht jetzt so aus:
            PHP-Code:
            <?php foreach ($entry['data'] as $field=>$data): ?>
                <?php if($field=='bericht' && $entry['data']['bericht']['raw']==''): ?>
                <td class="field bericht">&nbsp;</td>
                <?php elseif(!in_array($field, array('catalog_name','parentJumpTo'))): ?>
                <td class="field <?php echo $field; ?>"><?php if (strlen($data['value'])): ?>
                <?php echo $data['value']; ?>
                <?php endif; ?>
                </td>
                <?php endif; ?>
              <?php endforeach; ?>
            Die Lösung liegt hier:
            PHP-Code:
            $entry['data']['bericht']['raw']=='' 
            
            Das Feld ['raw'] ist nämlich leer, solange kein Text eingegeben wurde.

            Jetzt funktioniert es so, wie ich es mir vorgestellt habe.

            Gruß,
            Ignatz

            Kommentar

            Lädt...