Ole
Returning Observer

Template- und Generierungsprobleme mit Bildern

Hallo,

ich habe mir ein "Gallery by folder"-Template geschrieben, welches alle Bilder (100+) eines Ordners ausliest (FS_REFERENCE) und darstellt. Ich versuche hier mal den relevanten Code zu extrahieren

$CMS_SET(mediaClass,class("de.espirit.firstspirit.access.store.mediastore.Media"))$

$CMS_SET(media_list, st_folder.get().getChildren(mediaClass, false).toList())$

$CMS_FOR(media, media_list.sort(x -> x.getName()))$

    $CMS_IF(media.getType() == media.PICTURE)$

        $-- for debugging --$

        <!-- XS: $CMS_VALUE(_xs_newVar)$ | SM: $CMS_VALUE(_sm_newVar)$ | MD: $CMS_VALUE(_md_newVar)$ | LG: $CMS_VALUE(_lg_newVar)$ -->

        <!-- $CMS_VALUE(media)$ -->

        $-- eo debugging --$

        <picture>

            <source media="(min-width: 1200px)" srcset="$CMS_REF(media, abs:1, res: _lg_newVar)$">

            <source media="(min-width: 992px)" srcset="$CMS_REF(media, abs:1, res: _md_newVar)$">

            <source media="(min-width: 768px)" srcset="$CMS_REF(media, abs:1, res: _sm_newVar)$">

            <source srcset="$CMS_REF(media, abs:1, res: _xs_newVar)$">

            <img src="$CMS_REF(media,abs: 1, res: _xs_newVar)$" alt=""">

        </picture>


    $CMS_END_IF$

$CMS_END_FOR$

Bei der Ausgabe gibt es dann allerdings Probleme. So werden die Werte von "media" und den "_*_newVar" scheinbar willkürlich geändert

<!-- XS: 200px | SM: 300px | MD: 400px | LG: 600px -->

<!-- <MEDIUM editor="199649" filename="impressionen_004" id="979522" revision="156017" type="pic" uniquedescription="impressionen_004">

<LANG displayname="impressionen_004" language="DE"/>

<PICTURE>

<RESOLUTION crc="d0993fe" extension="jpg" height="640" pictureRevision="156016" resolutionid="ORIGINAL" size="177245" width="960"/>

<RESOLUTION resolutionid="800px"/>

</PICTURE>

</MEDIUM>

-->

<picture>

    <source media="(min-width: 1200px)" srcset="impressionen_002_800px.jpg">

    <source media="(min-width: 992px)" srcset="impressionen_002_600px.jpg">

    <source media="(min-width: 768px)" srcset="impressionen_001_600px.jpg">

    <source srcset="impressionen_002_400px.jpg">

    <img src="impressionen_002_400px.jpg" alt="">

</picture>

Das passt vorne und hinten nicht. Und es werden nicht nur die Werte durcheinander geworfen, auch die generierten Bilder sind falsch.

Ein paar beispielhafte Aufzählungen:

impression_001_800px enthält impressionen_005_200px

impression_001_600px enthält impressionen_004_400px

impression_003_900px enthält impressionen_001_600px

usw.

Zu behaupten ich wäre ratlos ist ziemlich untertrieben. Zwei Kollegen, die sich das Template angeschaut haben sind der Meinung, dass dort kein Fehler vorliegt.

Wie kann ich den Fehler finden?

Danke & Gruß

Ole


Nachtrag: Im Log sieht es dann z.B. so aus

INFO  13.11.2015 15:58:42.755{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_002 (id=979520), lang = DE, res = 300px, to media/img/impressionen_001_400px.jpg

Nachtrag 2:

Sobald ich ein Bild in 2 oder mehr Auflösungen referenziere treten die Probleme auf. Man könnte dann fast das Gefühl haben, dass FS sich selbst bei der Generierung überholt und dann verheddert.

Das Problem tritt auch im normalen Image-Template reproduzierbar auf.

Nachtrag 3: Logfile-Auszug

INFO  13.11.2015 15:58:42.752{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_001 (id=979519), lang = DE, res = 600px, to impressionen_001_600px.jpg

INFO  13.11.2015 15:58:42.752{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_001 (id=979519), lang = DE, res = 400px, to impressionen_001_400px.jpg

INFO  13.11.2015 15:58:42.753{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_001 (id=979519), lang = DE, res = 300px, to impressionen_001_300px.jpg

INFO  13.11.2015 15:58:42.753{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_001 (id=979519), lang = DE, res = 200px, to impressionen_001_200px.jpg

INFO  13.11.2015 15:58:42.754{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_002 (id=979520), lang = DE, res = 800px, to impressionen_002_800px.jpg

INFO  13.11.2015 15:58:42.754{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_002 (id=979520), lang = DE, res = 600px, to impressionen_002_600px.jpg

INFO  13.11.2015 15:58:42.755{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_002 (id=979520), lang = DE, res = 400px, to impressionen_002_400px.jpg

INFO  13.11.2015 15:58:42.755{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_002 (id=979520), lang = DE, res = 300px, to impressionen_001_400px.jpg

INFO  13.11.2015 15:58:42.755{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_002 (id=979520), lang = DE, res = 200px, to impressionen_001_300px.jpg

INFO  13.11.2015 15:58:42.756{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_003 (id=979521), lang = DE, res = 800px, to impressionen_003_800px.jpg

INFO  13.11.2015 15:58:42.756{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_003 (id=979521), lang = DE, res = 600px, to impressionen_001_800px.jpg

INFO  13.11.2015 15:58:42.757{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_003 (id=979521), lang = DE, res = 400px, to impressionen_001_600px.jpg

INFO  13.11.2015 15:58:42.757{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_003 (id=979521), lang = DE, res = 300px, to impressionen_002_400px.jpg

INFO  13.11.2015 15:58:42.757{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_003 (id=979521), lang = DE, res = 200px, to impressionen_001_400px.jpg

INFO  13.11.2015 15:58:42.758{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_004 (id=979522), lang = DE, res = 800px, to impressionen_004_800px.jpg

INFO  13.11.2015 15:58:42.759{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_004 (id=979522), lang = DE, res = 600px, to impressionen_002_800px.jpg

INFO  13.11.2015 15:58:42.759{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_004 (id=979522), lang = DE, res = 400px, to impressionen_002_600px.jpg

INFO  13.11.2015 15:58:42.759{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_004 (id=979522), lang = DE, res = 300px, to impressionen_001_600px.jpg

INFO  13.11.2015 15:58:42.760{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_004 (id=979522), lang = DE, res = 200px, to impressionen_002_400px.jpg

INFO  13.11.2015 15:58:42.760{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_005 (id=979523), lang = DE, res = 800px, to impressionen_005_800px.jpg

INFO  13.11.2015 15:58:42.761{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_005 (id=979523), lang = DE, res = 600px, to impressionen_003_800px.jpg

INFO  13.11.2015 15:58:42.761{g-sec=973093,g-node=973090} (de.espirit.firstspirit.generate.SiteProduction): copy picture impressionen_005 (id=979523), lang = DE, res = 400px, to impressionen_001_800px.jpg

Nachtrag 4: Ich bin noch keinen Schritt weiter Smiley Sad

(TL;DR) Unterm Strich gibt es 3 Probleme

  1. Die Namen der Bilder wechseln innerhalb eines Durchgangs (CMS_FOR) ohne das der Name des Mediums überschrieben wird und werden entsprechend falsch ins erzeugte HTML gerendert (Ausgabe via CMS_REF)
  2. Bei der Generierung werden die Medien falsch benannt (Dateiname + Auflösung; deutlich im Logfile zu sehen)
  3. Bei der Generierung werden die Medien falsch generiert (Inhalte: Datei & Auflösung)

Zwischenzeitlich habe ich noch probiert den Namen des Bilder am Anfang des CMS_FOR in eine Variable zu speichern und diese dann im CMS_REF via "media: _imgName" zu nutzen anstatt jedes Mal das ganze Objekt zu übergeben.

Ob mit oder ohne Sortierung ist das Ergebniss auch jedes Mal das selbe

Wenn ich mir nach jeder Zeile in der ich eine Ressource ausgebe das verwendete Objekt anzeigen lasse ($CMS_VALUE(media)$) wird es immer korrekt ausgegeben.

0 Kudos
2 Replies
rbitdd
Returning Responder

Hi Ole,

in FS5 hätte ich gefragt, ob Ihr schon den Template-Debugger versucht habt zu Rate zu ziehen... Aber nun...

Ich klopfe mal ein bisschen auf den Busch:

Was mir immer bei "das sind die falschen Bilder/Auflösungen" in einem Entwicklungsprojekt einfällt, ist die Frage nach gelöschten und neu angelegten Auflösungen. Habt Ihr zwischenzeitlich eure Auflösungen gelöscht und neu angelegt mit anderen Dimmensionen? (Wobei es mir danach fast nicht aussieht, aber deine beispielhafte Auflistung irritiert mich schon ein bisschen...)

Bei dem Verdacht auf "das Skript kommt durcheinander": Habt Ihr das Skript mal über einen kleinen Ordner laufen lassen, wo nur wenige (<10 oder sogar nur ein einzelnes) Bilder enthalten sind? Oder mal nur eine Auflösung generieren lassen?

Viele Grüße

Diana

0 Kudos
Ole
Returning Observer

Hallo Diana,

- Im Projekt gab es vorher keine anderen Auflösungen, sie sind auch nicht wiederholt angelegt oder nachträglich verändert worden.

- Bei einem einzelnen Bild tritt das Problem nicht auf, aber bei 4 Bildern schon bei Bild 3 + 4

- Wenn je Bild nur eine Auflösung generiert wird, tritt das Problem auch nicht auf

Ich treibe mitlerweile auch schon den Support mit dem Problem ein wenig zur Verzweiflung Smiley Wink

Danke & Gruß

Ole

0 Kudos