Falls "Bilder-Lightbox erstellen" - Titel selber bestimmen

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Gandalf
    Contao-Fan
    • 04.03.2010
    • 367

    #1

    Falls "Bilder-Lightbox erstellen" - Titel selber bestimmen

    Hallo zusammen !

    Habe gewisse Felder in meinem Katalog erstellt. Unter anderem auch ein Bild (Datei).
    Jetzt kann ich in den Einstellungen beim Typ "Datei" ja die Checkbox "Link als Dateidownload oder Bilder-Lightbox erstellen" anklicken. Passt soweit alles...

    Ich würde aber gerne den Text (Titel) welcher sich in der Lightbox öffnet gerne selber bestimmen.
    So wie ich dies sehe nimmt er immer den Dateinamen des Bildes.
    Kann man dies irgendwo ändern?

    Gruss
    Gandalf
  • MacKP
    Contao-Yoda
    • 15.06.2009
    • 13315

    #2
    Hallo Gandalf,
    ja du kannst ne meta.txt erstellen dafür.
    Ich würde aber empfehlen noch ein Feld zu erstellen (oder ein bestehendes zu nehmen) und das Template soweit anzupassen, das dieser Feldwert von der lightbox genommen wird.

    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

    • Gandalf
      Contao-Fan
      • 04.03.2010
      • 367

      #3
      Thanks ! Mach mich mal an die Arbeit

      Kommentar

      • Gandalf
        Contao-Fan
        • 04.03.2010
        • 367

        #4
        Da bin ich wieder...in welches Template müsste dies den rein? Habe beim
        Modul > Katalog-Liste zwei Template Einstellungsmöglickkeiten.
        • Katalog-Layout > catalog_simple
        • Katalog-Template > mod_cataloglist


        Ein Textfeld habe ich nun erstellt > {{restaurant_titel}}...

        Blick da nicht wirklich durch und wäre frohe, wenn mir jemand weiterhelfen könnte.

        Gandalf

        Kommentar

        • MacKP
          Contao-Yoda
          • 15.06.2009
          • 13315

          #5
          Hallo Gandalf,
          du musst in dem Fall die Liste selber bearbeiten, also catalog_simple (alle Templates mit mod_ am Anfang sind die Templates drum herum...).

          Dann lege ich dir das hier ans Herz: http://de.contaowiki.org/Catalog_Templates_anpassen

          Denn mit deinem Textfeld so wirst du nicht weiterkommen...

          Schau mal wie du jetzt weiter kommst. Und schau dir bitte das Tutorial zum Template anpassen genau an.

          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

          • Gandalf
            Contao-Fan
            • 04.03.2010
            • 367

            #6
            Morgen MacKP

            Dann lege ich dir das hier ans Herz: http://de.contaowiki.org/Catalog_Templates_anpassen
            Dies habe ich gemacht und bin einen Schritt weiter gekommen. Ich bin leider nicht ein wirklicher PHP-Kenner...
            Habe nun herausgefunden, dass ich im Template folgendes ausgeben kann um den Wert des Feldes zu bekommen:
            PHP-Code:
            <?php echo $entry['data']['bild_titel']['value']; ?>
            Im Template (Ausschnitt) - "catalog_simple" steht nun folgendes:
            HTML-Code:
            <div class="field <?php echo $field; ?>">
            	<div class="label"><?php echo $data['label']; ?></div>
            	<div class="value"><?php echo $data['value']; ?></div>
            </div>
            Irgendwie müsste da meiner Meinung nach das img mit dem titel-Attribut rein. Aber eben wie ? Blick da nicht durch...Vielleicht kannst du mir weiterhelfen, ansonsten muss ich meinen Vorhaben wohl begraben...

            Kommentar

            • MacKP
              Contao-Yoda
              • 15.06.2009
              • 13315

              #7
              Hallo Gandalf,
              ich wollte dir schon den ganzen Tag schreiben, hab aber heute nicht so viel Zeit... daher hier mal die knappe Variante:

              Im Template wird ja einfach alles ausgegeben.
              Du musst jetzt also einmal abfangen an welcher Stelle das Bild ausgegeben wird (damit du da was anderes einstellen kannst, ein bischen erweitert) und dann musst du noch den Titel vom Bild abfangen um an der Stelle nix auszugeben (weil das ja schon ausgegeben wurde). Für alles andere willst du es ja so lassen wie ich verstanden habe.

              Also:
              Code:
              <div class="field <?php echo $field; ?>">
               <?php if($entry['data']['bild']['value'];):?>
              
              <!-- Hier jetzt ausgabe von Bildmetadaten und Titel zusammengebastelt mit einem img-Inserttag -->
              
              <?php elseif($entry['data']['bild']['value'];):?>
              <!-- nix Ausgabe -->
              <?php else: ?>
              	<div class="label"><?php echo $data['label']; ?></div>
              	<div class="value"><?php echo $data['value']; ?></div>
              <?php endif; ?>
              </div>
              Wie das mit dem Thumbnail gehen könnte kannst du hier nachschauen:


              Wenn noch fragen sind melden... ich muss nu erst mal weg.

              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

              • Gandalf
                Contao-Fan
                • 04.03.2010
                • 367

                #8
                Danke für die Antwort.
                Siehe dir mal bitte meinen Screenshot an. Ich habe nun folgendes Erscheinungsbild.
                Jetzt wäre es eben schön, wenn sich beim klicken auf das Bild der Text bestimmen liese.
                Dieser befindet sich wie auf dem Screenshot ersichtlich in folgendem Feld
                PHP-Code:
                <?php echo $entry['data']['restaurant_bildtitel']['value']; ?>
                Mein ganzer Code des Template sieht ohne Änderung folgendermassen aus:
                PHP-Code:
                <?php if (count($this->entries)): ?>
                
                <div class="layout_simple">
                
                <?php foreach ($this->entries as $entry): ?>
                <div class="item<?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?>">
                <?php foreach ($entry['data'] as $field=>$data): ?>
                <?php if (!in_array($field, array('catalog_name','parentJumpTo'))): ?>
                <div class="field <?php echo $field; ?>">
                    <div class="label"><?php echo $data['label']; ?></div>
                    <div class="value"><?php echo $data['value']; ?></div>
                </div>
                <?php endif; ?>
                <?php endforeach; ?>
                
                <?php if ($entry['showLink'] && $entry['link']): ?>
                <div class="link"><?php echo $entry['link']; ?></div>
                <?php endif; ?>
                <?php if ($entry['linkEdit']): ?>
                <div class="linkEdit"><?php echo $entry['linkEdit']; ?></div>
                <?php endif; ?>
                </div>
                
                <?php endforeach; ?>
                </div>
                 
                <?php else: ?>
                
                <?php if ($this->condition): ?>
                <div class="condition"><?php echo $this->condition; ?></div>
                <?php else: ?>
                <p class="info">There are no entries matching your search.</p>
                <?php endif; ?>
                
                <?php endif; ?>
                Habe gemäss deiner Hilfestellung versucht folgendes einzubauen...(Ausschnitt)
                PHP-Code:
                <div class="field <?php echo $field; ?>">
                 <?php if($entry['data']['restaurant_bild']['value']):?>
                
                <!-- Hier jetzt ausgabe von Bildmetadaten und Titel zusammengebastelt mit einem img-Inserttag -->
                <img src="<?php echo $this->getImage('{{image::*}}',110,110,'proportional'); ?>" title="<?php echo $entry['data']['restaurant_bildtitel']['value']; ?>" alt="Mein alt-Text für mein Bild" />
                
                
                <?php elseif($entry['data']['restaurant_bild']['value']):?>
                <!-- nix Ausgabe -->
                <?php else: ?>
                    <div class="label"><?php echo $data['label']; ?></div>
                    <div class="value"><?php echo $data['value']; ?></div>
                <?php endif; ?>
                </div>
                Nun bekomme ich aber folgende Ansicht (Siehe Screenshot 2). Kein Bild, Adresse ist verschwunden und der Kurzbeschrieb...kannst du mir weiterhelfen ???
                Angehängte Dateien

                Kommentar

                • MacKP
                  Contao-Yoda
                  • 15.06.2009
                  • 13315

                  #9
                  Hallo Gandalf,
                  dann versuch mal an Stelle von dem hier:
                  Code:
                  <img src="<?php echo $this->getImage('{{image::*}}',110,110,'proportional'); ?>" title="<?php echo $entry['data']['restaurant_bildtitel']['value']; ?>" alt="Mein alt-Text für mein Bild" />
                  das hier :
                  Code:
                  {{image::<?php echo $entry['data']['restaurant_bild']['files']['0']; ?>?width=<?php echo $entry['data'][restaurant_bild']['meta']['0']['w']; ?>&height=<?php echo $entry['data']['restaurant_bild']['meta']['0']['h']; ?>&alt=<?php echo $entry['data']['restaurant_bildtitel']['value']; ?>&mode=crop&rel=lightbox}}
                  Das ist dann ein kompletter img-Inserttag (anzuschauen wie das geht hier -> http://www.contao.org/inserttags.html

                  Da musst du dann eigentlich nur an den passenden Stellen deine Feldwerte eingeben.
                  (Ich hab mal versucht die für dich passenden Werte einzugeben.. bitte noch mal kontrollieren....)

                  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

                  • Gandalf
                    Contao-Fan
                    • 04.03.2010
                    • 367

                    #10
                    Lieber MacKP
                    Habe es nun gemäss deinen Angaben versucht...musste noch ein Hochkomma ergänzen.
                    Dann bekomme ich diese Ansicht (Siehe Screenshot). 4mal das gleiche Bild. Adresse und Kurzbeschrieb sind verschwunden...
                    Nur nochmals zu meiner Situation...ich habe nur das catalog_simple.tpl -Template genommen und möchte dies so ändern, dass ich wenn ich ein Bild einfüge den Text des Bildes (Lightbox) selber benennen bzw. ausgeben kann.

                    Danke!
                    Gandalf
                    Angehängte Dateien

                    Kommentar

                    • MacKP
                      Contao-Yoda
                      • 15.06.2009
                      • 13315

                      #11
                      Hallo Gandalf,
                      ich brauche dann jetzt dein aktuelles Template und dann am besten auch mal die Ausgabe von dem Array (Quellcode Ansicht, damit man da was erkennen 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

                      • Gandalf
                        Contao-Fan
                        • 04.03.2010
                        • 367

                        #12
                        Wie gewünscht das momentan aktuelle Template (catalog_simple.tpl)
                        PHP-Code:
                        <?php if (count($this->entries)): ?>
                        
                        <div class="layout_simple">
                        
                        <?php foreach ($this->entries as $entry): ?>
                        <div class="item<?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?>">
                        <?php foreach ($entry['data'] as $field=>$data): ?>
                        <?php if (!in_array($field, array('catalog_name','parentJumpTo'))): ?>
                        <div class="field <?php echo $field; ?>">
                         <?php if($entry['data']['restaurant_bild']['value']):?>
                        
                        <!-- Hier jetzt ausgabe von Bildmetadaten und Titel zusammengebastelt mit einem img-Inserttag -->
                        {{image::<?php echo $entry['data']['restaurant_bild']['files']['0']; ?>?width=<?php echo $entry['data']['restaurant_bild']['meta']['0']['w']; ?>&height=<?php echo $entry['data']['restaurant_bild']['meta']['0']['h']; ?>&alt=<?php echo $entry['data']['restaurant_bildtitel']['value']; ?>&mode=crop&rel=lightbox}}
                        
                        
                        <?php elseif($entry['data']['restaurant_bild']['value']):?>
                        <!-- nix Ausgabe -->
                        <?php else: ?>
                            <div class="label"><?php echo $data['label']; ?></div>
                            <div class="value"><?php echo $data['value']; ?></div>
                        <?php endif; ?>
                        </div>
                        <?php endif; ?>
                        <?php endforeach; ?>
                        
                        <?php if ($entry['showLink'] && $entry['link']): ?>
                        <div class="link"><?php echo $entry['link']; ?></div>
                        <?php endif; ?>
                        <?php if ($entry['linkEdit']): ?>
                        <div class="linkEdit"><?php echo $entry['linkEdit']; ?></div>
                        <?php endif; ?>
                        </div>
                        
                        <?php endforeach; ?>
                        </div>
                         
                        <?php else: ?>
                        
                        <?php if ($this->condition): ?>
                        <div class="condition"><?php echo $this->condition; ?></div>
                        <?php else: ?>
                        <p class="info">There are no entries matching your search.</p>
                        <?php endif; ?>
                        
                        <?php endif; ?>
                        Und hier die Quellcodeansicht
                        HTML-Code:
                        Array
                        (
                            [0] => Array
                                (
                                    [id] => 1
                                    [catalog_name] => Verzeichnis - Restaurants - Test
                                    [parentJumpTo] => 0
                                    [tablename] => test
                                    [showLink] => 
                                    [class] =>  first last even
                                    [link] => <a href="restaurants/items/1.html" title="Die Details des Eintrags ansehen">Die Details des Eintrags ansehen</a>
                                    [url] => restaurants/items/1.html
                                    [data] => Array
                                        (
                                            [restaurant_titel] => Array
                                                (
                                                    [label] => Titel
                                                    [type] => text
                                                    [raw] => Restaurant zum Muster
                                                    [value] => <h3>Restaurant zum Muster</h3>
                                                )
                        
                                            [restaurant_adresse] => Array
                                                (
                                                    [label] => Adresse
                                                    [type] => longtext
                                                    [raw] => <p>Restaurant zum Muster</p>
                        <p>Musterstrasse<br />Musteradresse<br />Musterort<br />Telefon</p>
                        
                                                    [value] => <p>Restaurant zum Muster</p>
                        <p>Musterstrasse<br />Musteradresse<br />Musterort<br />Telefon</p>
                                                )
                        
                                            [restaurant_kurzbeschrieb] => Array
                                                (
                                                    [label] => Kurzbeschrieb
                                                    [type] => longtext
                                                    [raw] => <p>Lorem Ipsum</p>
                                                    [value] => <p>Lorem Ipsum</p>
                        
                                                )
                        
                                            [restaurant_bild] => Array
                                                (
                                                    [label] => Bild
                                                    [type] => file
                                                    [raw] => tl_files/website/img/2109907752_b705d47019_o.jpg
                                                    [value] => <span class="image first even"><a rel="lightbox[lbtestcataloglist0]" href="tl_files/website/img/2109907752_b705d47019_o.jpg" title="B705d47019 o"><img src="system/html/2109907752_b705d47019_o-56ca4921.jpg" alt="B705d47019 o" width="110" height="110" /></a></span>
                                                    [files] => Array
                                                        (
                                                            [0] => tl_files/website/img/2109907752_b705d47019_o.jpg
                                                        )
                        
                                                    [meta] => Array
                                                        (
                                                            [0] => Array
                                                                (
                                                                    [src] => system/html/2109907752_b705d47019_o-56ca4921.jpg
                                                                    [alt] => B705d47019 o
                                                                    [lb] => lbcataloglist0
                                                                    [w] => 110
                                                                    [h] => 110
                                                                    [wh] => width="110" height="110"
                                                                    [caption] => 
                                                                    [metafile] => 
                                                                )
                        
                                                        )
                        
                                                )
                        
                                        )
                        
                                )
                        
                        )
                        Hoffe dies passt...
                        Habe extra noch ein Feld "restaurant_bildtitel" erstellt welches ich nicht im Layout ausgebe. Dieses möchte ich eben gerne für den Titel der Lightbox verwenden.

                        Danke!
                        Gandalf

                        Kommentar

                        • MacKP
                          Contao-Yoda
                          • 15.06.2009
                          • 13315

                          #13
                          Hallo Gandalf,
                          ich hab dir da ne blöde elseif Abfrage mitgegeben wie mir auffällt ^^

                          Versuchs also mal damit:

                          Code:
                          <?php if($entry['data']['restaurant_bild']):?>
                          <!-- Hier jetzt ausgabe von Bildmetadaten und Titel zusammengebastelt mit einem img-Inserttag -->
                          {{image::<?php echo $entry['data']['restaurant_bild']['files']['0']; ?>?width=<?php echo $entry['data']['restaurant_bild']['meta']['0']['w']; ?>&height=<?php echo $entry['data']['restaurant_bild']['meta']['0']['h']; ?>&alt=<?php echo $entry['data']['restaurant_bildtitel']['value']; ?>&mode=crop&rel=lightbox}}
                          
                          <?php elseif($entry['data']['restaurant_bildtitel']):?>
                          <!-- nix Ausgabe -->
                          <?php else: ?>
                              <div class="label"><?php echo $data['label']; ?></div>
                              <div class="value"><?php echo $data['value']; ?></div>
                          <?php endif; ?>
                          Und natürlich musst du das Feld auch ausgeben lassen mit restaurant_bildtitel. Sonst kommt man da nicht ran wie man bei deiner array Ausgabe sieht...

                          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

                          • Gandalf
                            Contao-Fan
                            • 04.03.2010
                            • 367

                            #14
                            Hallo
                            Ich habe mir doch dich Mühe genommen und den ganzen Quelltext eingefügt...

                            Den Code den du du mir eingefügt hast ist doch der gleiche...oder habe ich was übersehen?
                            Bekomme immer noch fast das gleiche Erscheinungsbild...
                            Nun wird das Bild fünf mal angezeigt. Wenn ich auf die Bilder klicke öffnet sich die Lightbox mit Titel.
                            Dies funktioniert..
                            Das Bild sollte aber nur einmal angezeigt werden. Jetzt steht im Quelltext folgendes:

                            Code:
                            <div class="field restaurant_titel">
                             <!-- Hier jetzt ausgabe von Bildmetadaten und Titel zusammengebastelt mit einem img-Inserttag -->
                            <a href="tl_files/website/img/2109907752_b705d47019_o.jpg" rel="lightbox"><img src="system/html/2109907752_b705d47019_o-56ca4921.jpg" alt="" /></a>
                            
                            </div>
                            <div class="field restaurant_adresse">
                             <!-- Hier jetzt ausgabe von Bildmetadaten und Titel zusammengebastelt mit einem img-Inserttag -->
                            <a href="tl_files/website/img/2109907752_b705d47019_o.jpg" rel="lightbox"><img src="system/html/2109907752_b705d47019_o-56ca4921.jpg" alt="" /></a>
                            
                            </div>
                            
                            <div class="field restaurant_kurzbeschrieb">
                             <!-- Hier jetzt ausgabe von Bildmetadaten und Titel zusammengebastelt mit einem img-Inserttag -->
                            <a href="tl_files/website/img/2109907752_b705d47019_o.jpg" rel="lightbox"><img src="system/html/2109907752_b705d47019_o-56ca4921.jpg" alt="" /></a>
                            
                            </div>
                            <div class="field restaurant_bild">
                             <!-- Hier jetzt ausgabe von Bildmetadaten und Titel zusammengebastelt mit einem img-Inserttag -->
                            <a href="tl_files/website/img/2109907752_b705d47019_o.jpg" rel="lightbox"><img src="system/html/2109907752_b705d47019_o-56ca4921.jpg" alt="" /></a>
                            
                            </div>
                            <div class="field restaurant_bildtitel">
                             <!-- Hier jetzt ausgabe von Bildmetadaten und Titel zusammengebastelt mit einem img-Inserttag -->
                            <a href="tl_files/website/img/2109907752_b705d47019_o.jpg" rel="lightbox"><img src="system/html/2109907752_b705d47019_o-56ca4921.jpg" alt="" /></a>
                            
                            </div>
                            Da müsste doch in den anderen Feldern deren Wert übergeben werden ?
                            Zuletzt geändert von Gandalf; 15.06.2010, 15:23.

                            Kommentar

                            • MacKP
                              Contao-Yoda
                              • 15.06.2009
                              • 13315

                              #15
                              Ok,
                              ich hab das mal was umgestrickt mit dem inneren foreach (danke an Toflar für die Anregung).
                              Ich hoffe das klappt jetzt (bastel eben nur trocken rum ohne testen zu können gerade):

                              Code:
                              <?php if (count($this->entries)): ?>
                              
                              <div class="layout_simple">
                              
                              <?php foreach ($this->entries as $entry): ?>
                              <div class="item<?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?>">
                              
                               <?php if($entry['data']['restaurant_bild']['value']):?>
                              
                              <!-- Hier jetzt ausgabe von Bildmetadaten und Titel zusammengebastelt mit einem img-Inserttag -->
                              {{image::<?php echo $entry['data']['restaurant_bild']['files']['0']; ?>?width=<?php echo $entry['data']['restaurant_bild']['meta']['0']['w']; ?>&height=<?php echo $entry['data']['restaurant_bild']['meta']['0']['h']; ?>&alt=<?php echo $entry['data']['restaurant_bildtitel']['value']; ?>&mode=crop&rel=lightbox}}
                              
                              
                              <?php elseif($entry['data']['restaurant_bild']['value']):?>
                              <!-- nix Ausgabe -->
                              <?php else: ?>
                              <?php foreach ($entry['data'] as $field=>$data): ?>
                              <?php if (!in_array($field, array('catalog_name','parentJumpTo'))): ?>
                              <div class="field <?php echo $field; ?>">
                                  <div class="label"><?php echo $data['label']; ?></div>
                                  <div class="value"><?php echo $data['value']; ?></div>
                              </div>
                              <?php endif; ?>
                              <?php endforeach; ?>
                              <?php endif; ?>
                              
                              
                              <?php if ($entry['showLink'] && $entry['link']): ?>
                              <div class="link"><?php echo $entry['link']; ?></div>
                              <?php endif; ?>
                              <?php if ($entry['linkEdit']): ?>
                              <div class="linkEdit"><?php echo $entry['linkEdit']; ?></div>
                              <?php endif; ?>
                              </div>
                              
                              <?php endforeach; ?>
                              </div>
                               
                              <?php else: ?>
                              
                              <?php if ($this->condition): ?>
                              <div class="condition"><?php echo $this->condition; ?></div>
                              <?php else: ?>
                              <p class="info">There are no entries matching your search.</p>
                              <?php endif; ?>
                              
                              <?php endif; ?>
                              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

                              Lädt...