Bildergalerie-Ausgabe ändern

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Vettebulle
    Contao-Nutzer
    • 23.12.2009
    • 12

    #1

    Bildergalerie-Ausgabe ändern

    Moin,

    Ich würde gern nur ein Bild der Bildergalerie ausgeben, die durch den Katalog erzeugt wird. Alle anderen Bilder sollen trotzdem gelesen werden, so dass sie in der lightbox-galerie enthalten sind. Durch anklicken des einen Bildes soll wie gehabt die lightbox geöffnet werden.

    Ich habe mein Template dahingehend angepasst, dass ich jeden Eintrag separat anspreche. Daher habe ich im catalog_full.tpl, welches bei mir catalog_objektansicht.tpl heißt die Klasse Bildergalerie
    PHP-Code:
    <div class="bildergalerie">
            <?php echo $entry['data']['objekt_bildergalerie']['value']; ?>
        </div>
    Welche z.B. für das erste Bild folgende Ausgabe liefert
    PHP-Code:
    <a href=".../004_1.jpg" 
        title="1" rel="lightbox[lbcatalogreader0]">
        <img height="150" width="200" alt="1" src="system/html/004_1-95d17c24.jpg"/>
    </a> 
    
    Bisher habe ich folgendes versucht
    PHP-Code:
    <div class="bildergalerie">
        <a href="<?php echo $entry['raw']; ?>" title="Bildergalerie" rel="lightbox[lbcatalogreader0]">
            <img height="150" width="200" alt="<?php echo $entry['alt']; ?>" src="<?php echo $entry['src']; ?>"/> </a>
    </div>
    So ist ja lediglich der Link für die lightbox erstellt. Fehlt noch die Ausgabe, zum Beispiel des ersten Bildes, welches als Link zur Galerie fungieren soll.

    Im Value sind ja zum einen die [files], sowie die [meta] enthalten. Wäre es möglich nur das [meta][0] auszugeben?

    Viele Grüße
  • MacKP
    Contao-Yoda
    • 15.06.2009
    • 13315

    #2
    Hallo Vettebulle,
    um mehr sagen zu können wäre die Ausgabe von <?php print_r($this->entries); ?>.
    Ich hab keine Zeit jedesmal erst bei mir das gewünschte nachzubauen ;-)

    Zusätzlich könnte dir auch noch der Teil helfen -> http://de.contaowiki.org/typolight/T...alerienKreativ

    (mit CSS könntest du ja eh in der vorschau alle Bilder ausblenden....)

    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

    • Vettebulle
      Contao-Nutzer
      • 23.12.2009
      • 12

      #3
      Hey,
      Sorry, die Ausgabe hätte ich auch gleich mit dranhängen können.
      PHP-Code:
      [objekt_bildergalerie] => Array ( 
                  [label] => Bilder 
                  [type] => file 
                  [raw] => .../rul/002 
                  [value] =>
                      [files] => Array ( 
                              [0] => .../rul/002/01.JPG 
                              [1] => .../rul/002/02.JPG 
                              [2] => .../rul/002/03.JPG 
                              [3] => .../rul/002/04.JPG 
                              [4] => .../rul/002/05.JPG 
                              [5] => .../rul/002/06.JPG 
                              [6] => .../rul/002/07.JPG 
                              [7] => .../rul/002/08.JPG 
                              [8] => .../rul/002/09.JPG ) 
                                                                                                      
                      [meta] => Array ( 
                              [0] => Array ( 
                                  [src] => system/html/01-3f7bdd6c.jpg 
                                  [alt] => 01 
                                  [lb] => lbcatalogreader0 
                                  [w] => 200 
                                  [h] => 150
                                  [wh] => width="200" height="150" 
                                  [caption] => [metafile] => )
                                                                                                                  
                              [1] => Array (...usw. 
      
      Das Tutorial kenne ich. Allerdings wird dort ja das Inhaltselement Galerie verwendet, in welchem man direkt auswählen kann, wieviele Vorschaubilder ausgegeben werden sollen. Wie man mit CSS Bilder ausblenden kann weiß ich noch nicht, werde ich aber gleich versuchen herauszufinden.

      Greetz

      Kommentar

      • Vettebulle
        Contao-Nutzer
        • 23.12.2009
        • 12

        #4
        Hallo,
        Ich bin ein bisschen weitergekommen.
        Die Ausgabe des ersten Bildes, in Verbindung mit der Lightbox erreicht man hiermit
        PHP-Code:
        <div class="bildergalerie">
            <a href="<?php echo $entry['data']['objekt_bildergalerie']['files']['0'];?>" title="Bildergalerie" rel="lightbox[lbcatalogreader0]">
            <img height="150" width="200" alt="<?php echo $entry['data']['objekt_bildergalerie']['meta']['0']['alt'];?>" src="<?php echo $entry['data']['objekt_bildergalerie']['meta']['0']['src'];?>"/>
            </a>
        </div>
        Leider ist in dieser nur eben das erste Bild "['files']['0']" enthalten. Alle anderen werden vorher durch
        PHP-Code:
        <?php if (count($this->entries)): ?>
        
        <div class="layout_full">
                <?php foreach ($this->entries as $entry): ?>...
        "gezählt" und befinden sich im Array.
        Wie kann man also dann die Galerie "verlinken" die alle "files" enthält?

        Kommentar

        • MacKP
          Contao-Yoda
          • 15.06.2009
          • 13315

          #5
          Hallo Vettebulle,
          ich versuch mich mal da drann.
          Du brauchst also sowas wie das hier:
          Code:
          <a href="tl_files/image01.jpg" title="bla" rel="lightbox[lightbox_1]"><img src="tl_files/image01.jpg" alt="bla" /></a>
          <a href="tl_files/image02.jpg" title="bla" rel="lightbox[lightbox_1]"></a>
          Das 1. Bild mit Vorschaubild und die anderen Bilder nur als Link, damit diese ausgegeben werden, aber erst mal nix zu sehen ist.

          Es gibt da ja im Grunde 2 Herangehensweisen:
          1. Im Backend gibt man 1 Bild an und dann noch mehrere Bilder als Galerie (so hat man die volle Kontrolle darüber welches das Vorschaubild ist)
          2. Man gibt nur eine Bildergalerie an.

          Template (Grundüberlegung):
          1. Grundüberlegung der Ausgabe allgemein:
          Code:
          <?php if($entry['data']['einzelbild']['meta']):?>
          <div class="bilder">
               <strong><?php echo $entry['data']['einzelbild']['value']; ?></strong>
                <?php if($entry['data']['bildergalerie']['value']):?><?php echo $entry['data']['bildergalerie']['value']; ?><?php endif;?>
              </div>
          <?php endif;?>
          2. Grundüberlegung der Ausgabe allgemein:
          Code:
          <?php if($entry['data']['bildergalerie']['value']):?>
          <div class="bilder">
                <?php echo $entry['data']['bildergalerie']['value']; ?>
              </div>
          <?php endif;?>
          Damit hat man einfach nur die normale Galerie. Das wäre für deinen Fall ja nicht passend (wollte nur noch mal kurz für andere das ganze etwas dokumentieren).

          Um das jetzt zu verbinden musst du verschieden Vorgehen:

          1.
          Code:
          <?php if($entry['data']['einzelbild']['meta']):?>
          <div class="bilder">
               <strong><?php echo $entry['data']['einzelbild']['value']; ?>
          <a href="<?php echo $entry['data']['einzelbild']['files']['0'];?>" title="bla" rel="lightbox[lightbox_1]"><img src="<?php echo $entry['data']['einzelbild']['meta']['0']['src'];?>" alt="bla" /></a>
          </strong>
           <?php if($entry['data']['bildergalerie']['value']):?>
          <?php foreach ($entry['bildergalerie']['value'] as $field=>$data): ?>
          <a href="<?php echo $entry['bildergalerie']['value']['meta'][$field]['src'] ?>" title="bla" rel="lightbox[lightbox_1]" ></a>
          <?php endforeach; ?>
          <?php endif;?>
              </div>
          <?php endif;?>
          2.
          Für das 1. Bild (in Array ja die 0 eine andere Ausgabe machen):
          Code:
           <?php if($entry['data']['bildergalerie']['value']):?>
          <?php foreach ($entry['bildergalerie']['value'] as $field=>$data): ?>
          <?php if(($entry['bildergalerie']['value']['meta'][$field])=='0'):?>
          <a href="<?php echo $entry['data']['einzelbild']['files']['0'];?>" title="bla" rel="lightbox[lightbox_1]"><img src="<?php echo $entry['bildergalerie']['value']['meta'][$field]['src'] ?>" alt="bla" /></a>
          <?php else;?>
          <a rel="lightbox[lightbox_1]" href="<?php echo $entry['bildergalerie']['value']['meta'][$field]['src'] ?>" title="bla"></a>
          <?php endif;?>
          <?php endforeach; ?>
          <?php endif;?>
          Alles erst mal nur Theorie...
          musst du natürlich noch an deine Variablen anpassen...
          Hoffe das klappt so, denn habs nicht getestet.
          Eventuell kann da ja noch mal jemand drüber schauen der wirklich PHP kann ;-)

          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

          • Vettebulle
            Contao-Nutzer
            • 23.12.2009
            • 12

            #6
            Hey, danke dir.

            Ich habe es noch nicht ausprobiert, weil ich im Moment sehr viel mit meinem Studium zu tun habe. Rückmeldung kommt sofort, wenn ich es probiert habe

            Aber im Moment habe ich leider mit einem viel größeren Problem zu kämpfen...

            Kommentar

            • schnoedeltroedel
              Contao-Nutzer
              • 14.05.2010
              • 16

              #7
              Catalog Templates Anpassung für Bildergalerieausgabe funktioniert noch nicht

              Hallo,


              erstmal vielen Dank für die hilfreiche Erklärung. Ich brauche für meine Seite im Grunde genau das was du beschrieben hast. Hab meinen Code an das Beispiel angepasst, aber leider passiert nichts. Hier mal mein angepasster Code.

              PHP-Code:
              <?php if($entry['data']['car_image']['value']):?>
                  <?php foreach ($entry['car_image']['value'] as $field=>$data): ?>
                    <div class="tab"> 
                      <a href="<?php echo $entry['car_image']['value']['meta'][$field]['src'] ?>" class="fancy">
                        <img class="promo_pic" src="<?php echo $entry['car_image']['value']['meta'][$field]['src'] ?>" style="width:314px; height:236px;">
                      </a>
                    </div>    
                  <?php endforeach; ?>
              <?php endif;?>
              Vielleicht kann da mal jemand drüberschauen, und mir sagen was ich falsch mache. Wahrscheinlich liegt es nur an einer Kleinigkeit. Wenn ich die Seite lade, wird einfach gar nichts ausgegeben.
              Ich habe per print_r befehl schon getestet und herausgefunden, dass die erste if abfrage wahr ist. Nur scheint die dann folgende for-each schleife ignoriert zu werden.

              lg

              Kommentar

              • MacKP
                Contao-Yoda
                • 15.06.2009
                • 13315

                #8
                Hallo ,
                nur so auf die Schnelle:

                Versuchs mal in Zeile 2 so:
                Code:
                <?php foreach ($entry['data']['car_image']['value'] as $field=>$data): ?>
                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

                • schnoedeltroedel
                  Contao-Nutzer
                  • 14.05.2010
                  • 16

                  #9
                  tut sich leider nix.

                  Kommentar

                  • MacKP
                    Contao-Yoda
                    • 15.06.2009
                    • 13315

                    #10
                    Hmm ich hab den code selber noch nie gebraucht... leider hat den anscheinend auch mal keiner durchgesehen...
                    Wie sieht denn jetzt dein Kompolettes Template aus? Da sollte ja noch mehr drinn sein ^^

                    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

                    • schnoedeltroedel
                      Contao-Nutzer
                      • 14.05.2010
                      • 16

                      #11
                      hier der gesamte code:
                      PHP-Code:
                      <?php if (count($this->entries)): ?>
                      
                      <div class="layout_full">
                      <?php foreach ($this->entries as $entry): ?>        
                      
                      <div class="result_details <?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?>">
                        <?php if($entry['linkEdit']): ?><?php echo $entry['linkEdit']; ?><?php endif; ?>
                          
                        <?php if($entry['data']['car_image']['value']):?>
                          <?php foreach ($entry['car_image']['value'] as $field=>$data): ?>  
                            <div class="tab" id="tab0">
                              <a href="<?php echo $entry['car_image']['value']['meta'][$field]['src'] ?>" class="fancy">
                                <img class="promo_pic" src="<?php echo $entry['car_image']['value']['meta'][$field]['src'] ?>" style="width:314px; height:236px;" alt="" align="right" border="none" >
                              </a>
                            </div>      
                          <?php endforeach; ?>
                        <?php endif;?>
                        
                        <h1 class="wide260"><?php echo $entry['data']['anzeigename']['value']; ?></h1>
                        <p class="promo_price"><?php echo $entry['data']['preis']['value']; ?></p>
                        <p class="promo_params"><?php echo $entry['data']['ez']['value']; ?></p>
                        <p class="promo_params"><?php echo $entry['data']['kilometer']['value']; ?></p>
                        <p class="promo_params"><?php echo $entry['data']['kraftstoff']['value']; ?></p>
                        <p class="promo_params"><?php echo $entry['data']['leistung']['value']; ?></p>
                        <div class="wide260 gebraucht_gallery_container">
                        
                        </div>
                        <?php if($entry['data']['optional_hint']['value']): ?>
                        <div class="optionalNotice"><p><?php echo $entry['data']['optional_hint']['value']; ?></p></div>
                        <?php else: ?>
                        <p style="height:25px;"></p>
                        <?php endif; ?>
                        <div class="car_description">
                          <h2><?php echo $entry['data']['anzeigename']['value']; ?></h2>
                          <div class="descr_table"> 
                            <div class="column identifier">
                              <p> Erstzulassung </p>
                                 <p> Kilometerstand</p>
                                 <p> HU/AU</p>
                                 <p> Krafstoff</p>
                                 <p> Leistung</p>
                                 <?php if (is_numeric($entry['data']['verbrauch_kombiniert']['value'][0])): ?>
                                <p> Verbrauch kombiniert</p>
                              <?php endif; ?>
                                  <?php if (is_numeric($entry['data']['verbrauch_innerorts']['value'][0])): ?>
                                   <p> Verbrauch innerorts</p>
                              <?php endif; ?>
                          <?php if (is_numeric($entry['data']['verbrauch_ausserorts']['value'][0])): ?>
                            <p> Verbrauch außerorts</p>
                              <?php endif; ?>
                                 <p> Getriebeart</p>
                            </div>
                            <div class="column lastRight">
                                 <p><?php echo $entry['data']['ez']['value']; ?></p>
                                <p><?php echo $entry['data']['kilometer']['value']; ?></p>
                              <p><?php echo $entry['data']['hu']['value']; ?></p>
                              <p><?php echo $entry['data']['kraftstoff']['value']; ?></p>
                              <p><?php echo $entry['data']['leistung']['value']; ?></p>
                          <?php if (is_numeric($entry['data']['verbrauch_kombiniert']['value'][0])): ?>
                                <p><?php echo $entry['data']['verbrauch_kombiniert']['value']; ?></p>
                              <?php endif; ?>
                              <?php if (is_numeric($entry['data']['verbrauch_innerorts']['value'][0])): ?>
                                <p><?php echo $entry['data']['verbrauch_innerorts']['value']; ?></p>
                              <?php endif; ?>
                              <?php if (is_numeric($entry['data']['verbrauch_ausserorts']['value'][0])): ?>
                                <p><?php echo $entry['data']['verbrauch_ausserorts']['value']; ?></p>
                              <?php endif; ?>
                              <p><?php echo $entry['data']['getriebeart']['value']; ?></p>
                            </div>
                            <div class="column identifier">
                               <p> Farbe</p>
                              <?php if($entry['data']['zylinder']['value']): ?>
                            <p> Zylinder</p>
                              <?php endif; ?>  
                                 <p> Hubraum</p>
                                 <p> Türen</p>
                                 <p> Schadstoffklasse</p>
                           <?php if($entry['data']['klimatisierung']['value']): ?>
                                <p> Klimatisierung</p>
                              <?php endif; ?>  
                              <?php if($entry['data']['polsterart']['value']): ?>
                                   <p> Polsterart</p>
                              <?php endif; ?>  
                                 <?php if($entry['data']['polsterfarbe']['value']): ?>
                                <p> Polsterfarbe</p>
                              <?php endif; ?>  
                            </div>
                            <div class="column ">
                               <p><?php echo $entry['data']['farbe']['value']; ?></p>
                              <?php if($entry['data']['zylinder']['value']): ?>
                                   <p><?php echo $entry['data']['zylinder']['value']; ?></p>
                              <?php endif; ?>  
                                 <p><?php echo $entry['data']['hubraum']['value']; ?></p>
                                 <p><?php echo $entry['data']['tueren']['value']; ?></p>
                                 <p><?php echo $entry['data']['schadstoffklasse']['value']; ?></p>
                              <?php if($entry['data']['klimatisierung']['value']): ?>
                                   <p><?php echo $entry['data']['klimatisierung']['value']; ?></p>
                              <?php endif; ?>
                              <?php if($entry['data']['polsterart']['value']): ?>  
                                   <p><?php echo $entry['data']['polsterart']['value']; ?></p>
                                <?php endif; ?>
                              <?php if($entry['data']['polsterfarbe']['value']): ?>
                                <p><?php echo $entry['data']['polsterfarbe']['value']; ?></p>            
                              <?php endif; ?>  
                            </div>
                            <div class="column rightSide"> </div>
                          </div>
                        <h2>Fahrzeugbeschreibung</h2>  
                        <p class="fliesstext width570"> <?php echo $entry['data']['fahrzeugbeschreibung']['value']; ?></p>
                        <h2>Fahrzeugausstattung</h2>
                        <p class="fliesstext width570"><?php echo $entry['data']['fahrzeugausstattung']['value']; ?></p>
                        </div>
                      <?php endforeach; ?>
                      </div>
                      
                      <?php else: ?>
                      <p class="info"><?php echo $this->noItemsMsg; ?></p>
                      <?php endif; ?>
                      Der Rest funktioniert soweit einwandfrei Zur Not müsste ich halt jedes Bild einzeln als Feld anlegen und dann einzeln ausgeben, aber das wäre nicht sonderlich schön...

                      Kommentar

                      Lädt...