Catalog Größenanpassung Bilder

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • xchs
    Administrator
    • 19.06.2009
    • 14682

    #16
    Jetzt hab ich mal ein wenig herumprobiert mit folgender Schleife:
    PHP-Code:
                <div class="field gallery">
                  <?php if ($entry['data']['gallery']['value']): ?>
                    <div class="value">
                      <?php foreach ($entry['data']['gallery']['files'] as $id=>$ref): ?>
                        <?php echo str_replace($ref, $this->getImage($ref, $GLOBALS['TL_CONFIG']['imageWidth'], $GLOBALS['TL_CONFIG']['imageHeight']), $entry['data']['gallery']['value']); ?>
                      <?php endforeach; ?>
                    </div>
                  <?php endif; ?>
                </div>
    Das erste Gallery-Bild wird nun entsprechend verkleinert dargestellt, alle anderen jedoch nicht. Irgendwas scheint mit der foreach-Schleife noch nicht ganz richtig zu sein (wie schon gesagt - bin kein PHP-Experte)

    Also, wenn ich das so produzierte Ergebnis richtig interpretiere, wird beim ersten Durchlauf der Schleife das 1. Bild gesucht, verkleinert und im Eintrag $entry['data']['gallery']['value'] ersetzt; die restlichen drei Bilder bleiben aber davon unberührt. Beim nächsten Durchlauf erfolgt dann die gleiche Prozedur, dann allerdings mit dem 2. Bild usw. Dadurch erhalte ich dann anstelle von 4 Vorschaubildern insgesamt 16 Gallery-Bilder (jedes vierte davon entsprechend verkleinert)
    Zuletzt geändert von xchs; 17.10.2009, 01:09.
    Contao Community Administrator

    [Unterstützungsmöglichkeiten]
    sigpic

    Kommentar

    • Andreas
      Contao-Urgestein
      • 19.06.2009
      • 7709

      #17
      Ja klar. Innerhalb der Schleife gibst du ja den kompletten String aus (value), welcher bereits alle 4 Vorschaubilder enthält. Die Schleife wird 4 mal durchlaufen, also bekommst du alles 4 mal. Versuch mal folgendes. Ich kann das leider nicht testen. Ich möchte in der Schleife 4 mal den href austauschen. Ich hoffe, dass er bei jedem Durchlauf den bereits geänderten String (value) nimmt. Danach mach ich erst die Ausgabe - nur einmal.
      PHP-Code:
      <?php if ($entry['data']['gallery']['value']): ?>
      <div class="field gallery">
      <?php foreach ($entry['data']['gallery']['files'] as $fullsizehref): ?>
        <?php str_replace($fullsizehref, $this->getImage($fullsizehref, $GLOBALS['TL_CONFIG']['imageWidth'], $GLOBALS['TL_CONFIG']['imageHeight']), $entry['data']['gallery']['value']); ?>
      <?php endforeach; ?>
        <div class="value">
          <?php echo $entry['data']['gallery']['value']; ?>
        </div>
      </div>
      <?php endif; ?>
      Das erste IF hab ich dir mal ganz außenrum gelegt, da dir sonst ja evtl. ein leerer DIV erzeugt wird wenn kein value existiert.

      Andreas
      Bitte!
      Vor Anfragen im Forum HTML validieren.
      Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

      Vielen Dank an alle Wunschlistenerfüller
      Andreas Burg, Web Solutions

      Kommentar

      • xchs
        Administrator
        • 19.06.2009
        • 14682

        #18
        Hallo Andreas,

        danke für das Code-Schnipsel. Leider hat es damit auch nicht funktioniert. Irgendwie scheint er dann bei der Ausgabe
        PHP-Code:
        <?php echo $entry['data']['gallery']['value']; ?>
        wieder die ursprünglichen Bilder/Bildgrößen zu verwenden.

        Um zu überprüfen, ob auch wirklich eine Ersetzung stattgefunden hat habe ich mal testweise probiert, in der foreach-Schleife die String-Replace-Funktion mittels "echo" ausgeben zu lassen. Wie schon im letzten Beitrag beschrieben erhalte ich dann alle 16 (4x4) Vorschaubilder angezeigt, wobei von denen jedes vierte entsprechend größenangepasst geöffnet wird.
        Aber wie schon zuvor gesagt - beim zweiten Aufruf bzw. bei der eigentlichen Ausgabe
        PHP-Code:
        <?php echo $entry['data']['gallery']['value']; ?>
        gibt er mir wieder die originalen Bilder aus.

        In Deinem Beitrag #2 hast Du gschrieben, dass man für die Funktion "getImage" auch ein Ziel angeben könnte; wäre es in diesem Zusammenhang nicht auch möglich, auf diese Weise die Original-Bilder mit der größenangepassten Version zu überschreiben oder geht das nicht?
        Dann könnte ich nämlich alle Bilddateien in
        PHP-Code:
        $entry['data']['gallery']['files'] 
        
        vorher geeignet verkleinern und erst dann über
        PHP-Code:
        <?php echo $entry['data']['gallery']['value']; ?>
        ausgeben.
        Was meinst Du, würde das funktionieren?
        Contao Community Administrator

        [Unterstützungsmöglichkeiten]
        sigpic

        Kommentar

        • Andreas
          Contao-Urgestein
          • 19.06.2009
          • 7709

          #19
          Wenn mich nicht alles täuscht, dann werden die Bilder umbenannt, sieh dir die erzeugten Bilder mal an.

          Ich hab aber einen Fehler von mir entdeckt. In der Schleife habe ich vergessen den geänderten String pro Durchgang neu in sich selbst zu speichern, klar, dass das nicht funktioniert, es wird ja immer wieder auf die unveränderte Variable ...value zugegriffen. Versuch mal das hier. Ich hoffe du verstehst, was ich da mache.
          PHP-Code:
          <?php if ($entry['data']['gallery']['value']): ?>
            <?php $newvalue = $entry['data']['gallery']['value']; ?>
          <div class="field gallery">
          <?php foreach ($entry['data']['gallery']['files'] as $fullsizehref): ?>
            <?php $newvalue = str_replace($fullsizehref, $this->getImage($fullsizehref, $GLOBALS['TL_CONFIG']['imageWidth'], $GLOBALS['TL_CONFIG']['imageHeight']), $newvalue); ?>
          <?php endforeach; ?>
            <div class="value">
              <?php echo $newvalue; ?>
            </div>
          </div>
          <?php endif; ?>
          Andreas
          Bitte!
          Vor Anfragen im Forum HTML validieren.
          Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

          Vielen Dank an alle Wunschlistenerfüller
          Andreas Burg, Web Solutions

          Kommentar

          • xchs
            Administrator
            • 19.06.2009
            • 14682

            #20
            Juhu, es funktioniert jetzt!
            Nunmehr werden alle Bilder, sowohl das eigentliche Produktbild als auch die Bilder der Gallerie entsprechend verkleinert angezeigt.
            Aber mit den betreffenden Redakteuren werde ich schon noch Mal ein Wörtchen reden müssen was ihnen da eingefallen ist, Bilder mit jeweils 670kB und einer Auflösung 2048 x 1536 hochzuladen... Letzendlich leidet darunter ja auch die Zugriffszeit auf die Seite, wenn durch die zusätzlichen Anpassungen im Template erst umständliche Größenberechnungen durchgeführt werden müssen...

            Zitat von Andreas Beitrag anzeigen
            Wenn mich nicht alles täuscht, dann werden die Bilder umbenannt, sieh dir die erzeugten Bilder mal an.
            Hab grad nachgesehen - ja, die verkleinerten Bilder werden unter /system/html/ abgelegt und erhalten alle eine ID - so wie all die anderen Bilder im HTML-Verzeichnis.

            Andreas, vielen Dank für die programmtechnische Unterstützung (wie schon gesagt, ich bin kein PHP-Experte)
            Contao Community Administrator

            [Unterstützungsmöglichkeiten]
            sigpic

            Kommentar

            • Andreas
              Contao-Urgestein
              • 19.06.2009
              • 7709

              #21
              Dein Ansatz mit der Schleife war ja nicht schlecht, wie du siehst hatte ich auch einen Fehler gemacht, man muss halt einfach dran bleiben

              Die Umwandlung findet ja zum Glück nur beim 1. Mal statt. Mit dem Tool XENU kannst du alle Bilder auf einen Rutsch erzeugen.

              Andreas
              Bitte!
              Vor Anfragen im Forum HTML validieren.
              Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

              Vielen Dank an alle Wunschlistenerfüller
              Andreas Burg, Web Solutions

              Kommentar

              • xchs
                Administrator
                • 19.06.2009
                • 14682

                #22
                Hallo, Dein Tipp, die Links mit XENU zu checken, ist natürlich auch super.
                Hab's grad gemacht - keine Probleme gefunden. Und nebenbei wird er mir die Bilder auch verkleinert haben...hehe ;-)
                Contao Community Administrator

                [Unterstützungsmöglichkeiten]
                sigpic

                Kommentar

                • xchs
                  Administrator
                  • 19.06.2009
                  • 14682

                  #23
                  He, und Xenu eignet sich auch bestens, den TYPOlight Suchindex neu aufbauen zu lassen (eben probiert). Bei mir werden nämlich durch die TL-eigene Funktion nicht alle Links/Seiten erfasst...
                  Super, genial!!
                  Contao Community Administrator

                  [Unterstützungsmöglichkeiten]
                  sigpic

                  Kommentar

                  Lädt...