Catalog Bildergalerie mit Caption

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • art-instinct
    Contao-Nutzer
    • 12.04.2012
    • 175

    #1

    Catalog Bildergalerie mit Caption

    Hallo,

    ich stehe etwas auf dem Schlauch. Ich habe ein File-Feld mit Mehrfachauswahl für Bilder.
    Im Frontend möchte ich alle diese Bilder mit dazugehöriger Caption = Alt-Text aus dem Meta-File befüllen.
    Für ein einzelnes Bild komme ich an die Metadaten ran, aber ich schaffe es nicht im Template das für alle auszugeben.

    Hier gibt er ja nur den alt-text des ersten Bildes aus.
    PHP-Code:
    <?php echo $entry['data']['bilder_farben']['value']; ?>
    <?php echo $entry['data']['bilder_farben']['meta']['0']['alt']; ?>
    Meta-Daten /meta.txt) habe ich natürlich befüllt.

    Kann mir jemand auf die Sprünge helfen, wie ich das im Template umsetze?
  • MacKP
    Contao-Yoda
    • 15.06.2009
    • 13315

    #2
    Hallo art-instinct,
    eigentlich sollte der Catalog sich das automatisch aus der meta.txt rausholen. Das passiert bei dir nicht?

    Anonsten weiß ich gerade nicht so ganz, womit du jetzt die Probleme hast.. du wirst da ein foreach draus machen müssen, wenn du das von Hand machen musst/möchtest. Beispiele finden sich im Wiki ;-)

    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

    • art-instinct
      Contao-Nutzer
      • 12.04.2012
      • 175

      #3
      Hm, also Caption ist auch drin, aber der Catalog (aktuell/von vorgestern ausm SVN) gibt bei
      PHP-Code:
      <?php echo $entry['data']['bilder_farben']['value']; ?>
      keine Caption in der Ausgabe.
      Egal on Lightbox für die Bilder aktiviert ist oder nicht.

      Und du sagst, eigentlich sollte der Catalog das automatisch machen, wenn das vorhanden ist? Title (in Link und Lightbox) sowie Alt-Text fürs Bild werden korrekt gesetzt.

      Da ich noch ziemlicher php-noob bin, schaffe ich es nicht mit die foreach-schleife zu setzen. Kannst du mir da helfen? Wiki hab ich gelesen und die anderen Threads helfen mir auch nicht weiter

      Code:
      [bilder_farben] => Array
                              (
                                  [label] => Farben
                                  [type] => file
                                  [raw] => a:3:{i:0;s:108:"tl_files/leder-fiedler/produkte/moebelleder/4216066-4216066-high-resolution-stamped-leather-texture_m10c.jpg";i:1;s:65:"tl_files/leder-fiedler/produkte/moebelleder/adasdmaskdm-asd_a.jpg";i:2;s:54:"tl_files/leder-fiedler/produkte/moebelleder/asjdna.jpg";}
                                  [value] => <span class="image first even"><a data-lightbox="lbmoebelledercatalogreader0" href="tl_files/leder-fiedler/produkte/moebelleder/4216066-4216066-high-resolution-stamped-leather-texture_m10c.jpg" title="Testbild"><img src="system/html/4216066-4216066-high-resolution-stamped-leather-texture_m10c-c000f94c.jpg" alt="Testbild" width="130" height="100" /></a></span><span class="image odd"><a data-lightbox="lbmoebelledercatalogreader0" href="tl_files/leder-fiedler/produkte/moebelleder/adasdmaskdm-asd_a.jpg" title="Bild2"><img src="system/html/adasdmaskdm-asd_a-3a87f310.jpg" alt="Bild2" width="130" height="100" /></a></span><span class="image last even"><a data-lightbox="lbmoebelledercatalogreader0" href="tl_files/leder-fiedler/produkte/moebelleder/asjdna.jpg" title="BTestdfsdf 534"><img src="system/html/asjdna-9959bb90.jpg" alt="BTestdfsdf 534" width="130" height="100" /></a></span>
                                  [files] => Array
                                      (
                                          [0] => tl_files/leder-fiedler/produkte/moebelleder/4216066-4216066-high-resolution-stamped-leather-texture_m10c.jpg
                                          [1] => tl_files/leder-fiedler/produkte/moebelleder/adasdmaskdm-asd_a.jpg
                                          [2] => tl_files/leder-fiedler/produkte/moebelleder/asjdna.jpg
                                      )
      
                                  [meta] => Array
                                      (
                                          [0] => Array
                                              (
                                                  [src] => system/html/4216066-4216066-high-resolution-stamped-leather-texture_m10c-c000f94c.jpg
                                                  [alt] => Testbild
                                                  [lb] => lbcatalogreader0
                                                  [w] => 130
                                                  [h] => 100
                                                  [wh] => width="130" height="100"
                                                  [caption] => Testbild
                                                  [metafile] => Array
                                                      (
                                                          [0] => Testbild
                                                          [1] => 
                                                          [2] => Testbild
                                                      )
      
                                              )
      
                                          [1] => Array
                                              (
                                                  [src] => system/html/adasdmaskdm-asd_a-3a87f310.jpg
                                                  [alt] => Bild2
                                                  [lb] => lbcatalogreader0
                                                  [w] => 130
                                                  [h] => 100
                                                  [wh] => width="130" height="100"
                                                  [caption] => Bild2
                                                  [metafile] => Array
                                                      (
                                                          [0] => Bild2
                                                          [1] => 
                                                          [2] => Bild2
                                                      )
      
                                              )
      
                                          [2] => Array
                                              (
                                                  [src] => system/html/asjdna-9959bb90.jpg
                                                  [alt] => BTestdfsdf 534
                                                  [lb] => lbcatalogreader0
                                                  [w] => 130
                                                  [h] => 100
                                                  [wh] => width="130" height="100"
                                                  [caption] => BTestdfsdf 534
                                                  [metafile] => Array
                                                      (
                                                          [0] => BTestdfsdf 534
                                                          [1] => 
                                                          [2] => BTestdfsdf 534
                                                      )
      
                                              )
      Edit: habs geschafft, aber was ich nicht schaffe ist, dass die einzelnen <span> neben der klasse "image" automatisch first/last even/odd bekommen. wie geht das?
      PHP-Code:
          <div class="image_container">
          
                  <?php foreach ($entry['data']['bilder_farben']['files'] as $i=>$file): ?>
                      <span class="image">
                          <a data-lightbox="<?php echo $entry['data']['bilder_farben']['meta'][$i]['lb']; ?>" href="<?php echo $entry['data']['bilder_farben']['files'][$i]; ?>" title="<?php echo $entry['data']['bilder_farben']['meta'][$i]['caption']; ?>">
                              <img src="<?php echo $entry['data']['bilder_farben']['meta'][$i]['src']; ?>" alt="<?php echo $entry['data']['bilder_farben']['meta'][$i]['caption']; ?>" <?php echo $entry['data']['bilder_farben']['meta'][$i]['wh']; ?> />
                          </a>
                      </span>
                      <figcaption class="caption" style="width:<?php echo $entry['data']['bilder_farben']['meta'][$i]['w']; ?>">
                          <?php echo $entry['data']['bilder_farben']['meta'][$i]['caption']; ?>
                      </figcaption>
                  <?php endforeach; ?>
              
          </div>
      Zuletzt geändert von art-instinct; 15.03.2013, 14:45.

      Kommentar

      • MacKP
        Contao-Yoda
        • 15.06.2009
        • 13315

        #4
        Die Klassen werden generiert.. und da müsstest du auch eine Variable für haben um die dann auszugeben (irgendwas mit class).

        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

        • art-instinct
          Contao-Nutzer
          • 12.04.2012
          • 175

          #5
          Jetzt bräuchte ich etwas Unterstützung von einem PHP-Guru ;-)

          Das Template:
          PHP-Code:
          <?php foreach ($entry['data']['bilder_farben']['files'] as $i=>$file): ?>
          <span class="image">
              <img src="<?php echo $entry['data']['bilder_farben']['meta'][$i]['src']; ?>" alt="<?php echo $entry['data']['title']['value']; ?> <?php echo $entry['data']['bilder_farben']['meta'][$i]['caption']; ?>" style="width:<?php echo $entry['data']['bilder_farben']['meta'][$i]['w']; ?>px; height:<?php echo $entry['data']['bilder_farben']['meta'][$i]['h']; ?>px;" />
              <figcaption class="caption" style="width:<?php echo $entry['data']['bilder_farben']['meta'][$i]['w']; ?>px;">
                  <?php echo $entry['data']['bilder_farben']['meta'][$i]['caption']; ?>
              </figcaption>
          </span>
          <?php endforeach; ?>
          gibt mir ja die Bilder mit meinen Meta-Daten wunderbar aus. Bei der PDF-Generierung hab ich jetzt aber das Problem, dass ich nicht 4 divs nebeneinander gefloatet bekomme und das 5. dann in der nächsten Zeile steht.
          Hier müsste ich wohl auf eine Tabelle ausweichen.

          kann mir jemand das Template so basteln, dass da eine Tabelle generiert wird, wo die Bilder mit Caption drin sind?
          Ein PHP-Schnipsel für die Erstellung einer Tabelle habe ich auch, aber ich bekomme die nicht zusammen:

          PHP-Code:
          <?php
          
           $values = range(1, 31);
          $rows = array_chunk($values, 7);
          
           print "<table>\n";
           foreach ($rows as $row) {
               print "<tr>\n";
               foreach ($row as $value) {
                   print "<td>" . $value . "</td>\n";
               }
               print "</tr>\n";
           }
           print "</table>\n";
          
          ?>

          Danke!

          Kommentar

          Lädt...