marcus_rommel
I'm new here

Content Creator Bilder zuschneiden - editorId() Aufruf für FS_LIST Elemente

Jump to solution

Hallo,

ich komme gerade nicht mehr mit dem editorId() Aufruf weiter.

Wir haben einen neuen Slider und bei diesem sollen die Bilder direkt im Content Creator beschnitten werden können. Leider bekomme ich den editorId() Aufruf nicht richtig zusammen und es klappt nicht.

Aufgebaut ist das ganze wie folgt. Es gibt einen Slideshow-Absatz, der eine FS_LIST enthält (SLIDESHOW). Diese FS_LIST nutzt ein sectiontemplate zur Bildauswahl und für die Eingabe einiger anderer Infos (SLIDE).

Über die resultierende Liste wird iteriert und ein Skript (SLIDER_FRAG) baut dann das HTML zusammen.

Jetzt zum (für mich) kniffligen Teil. Was muss ich dem editorId() Aufruf nun übergeben? Aktuell sieht es so aus:

$CMS_VALUE(editorId(editorName: crop_editorName, element: crop_element, resolution:resolution, target:crop_target))$

EditorName ist laut Doku "Name der Eingabekomponente des FS_LIST-Absatzes". Im Moment steht da der Name der Eingabekomponente für die Auswahl des Bilder aus dem SLIDE Absatz: st_banner

Element enthält laut Doku: "Objekt, das eine FS_LIST enthält". Was ist damit genau gemeint und wie komme ich da ran?

Target enthält laut Doku "FormDataList-Objekt des FS_LIST-Absatzes". Auch hier weiß ich nicht so recht was das sein soll. Habe jetzt das hier genommen: element.get(useLang,"st_banner").get().getMedia()

Das gibt mir ein Medium zurück.

Danke & Grüße

Marcus

0 Kudos
1 Solution

Accepted Solutions

Hallo Marcus,

du könntest dein Problem vermutlich auch dadurch lösen, dass du den Code etwas anders verteilst.

Im Slideshow-Absatz gibst du einfach über ein $CMS_VALUE$ die FS_LIST aus:

<div class="slider-main">

    $CMS_VALUE(st_elements)$

</div>

Im Absatz für die einzelnen Slides kannst du dann die Ausgabe der Bilder vornehmen inkl. editorId:

<div class="slide" $CMS_VALUE(editorId())$>

   <figure$CMS_VALUE(editorId(editorName: "st_banner", resolution:"Keyvisual_large"))$>

       ...

    </figure>

</div>


So kannst du dir target und element ganz sparen und hast ausßerdem eine bessere Trennung. Wäre das eine Alternative für dich?


Viele Grüße

Tim


View solution in original post

0 Kudos
6 Replies
MichaelaReydt
Community Manager

Hallo Marcus,

wir haben in einem Projekt in meinen Augen denselben Aufbau, wie du ihn beschreibst:

Das Seitentemplate enthält eine FS_LIST (pt_slider), die ein Absatztemplate verwendet (slide). Das Absatztemplate enthält u.a. eine FS_REFERENCE (st_picture).

Im HTML-Kanal des Absatztemplates gibt es dann zwei editorId()-Aufrufe:

<div $CMS_VALUE(editorId())$>

     [...]

     <figure$CMS_VALUE(editorId(editorName:"st_picture", resolution:"1280x370"))$>

          $CMS_RENDER(template:"picture", image:st_picture)$

     </figure>

     [...]

</div>

Evtl. hilft dir das weiter?

Viele Grüße

Michaela

0 Kudos

Hallo Michaela,

danke für den Tipp, leider funktioniert der editorid-Aufruf bei mir nicht. Es kommt ein Fehler (500 The call failed on the server; see server log for details) und im Serverlog steht hinterher, dass er die besagte Eingabekomponente nicht finden konnte.(java.lang.IllegalArgumentException: Editor 'st_banner' not found!)

Ich habe mein Bild jetzt auch mal in eine Figure gepackt und da folgenden editorid-Aufruf drin:

$CMS_VALUE(editorId(editorName: crop_editorName, target: crop_target, element: crop_element, resolution: resolution))$

Klappt leider auch nicht ganz. Es kommt zwar die Bearbeitungsleiste, mit der man die Bilder auch ändern kann, aber das Bild lässt sich nicht direkt beschneiden. Es erscheint zwar auch der Stift, wenn man über dem Bild ist, aber das resultiert im selben Fehler, wie auch schon oben beschrieben.

Hier ist mal mein Code in gekürzter Fassung:

$-- st_elements ist die FS_LIST Eingabekomponente --$

$CMS_SET(elements,#global.section.getFormData().get(useLang,"st_elements").get())$

<div class="slider-main">

    $CMS_FOR(element,elements)$

        $CMS_SET(crop_element,element.get(useLang,"st_banner").get().getMedia())$

        $CMS_SET(crop_target,element)$

        $CMS_SET(crop_editorName,"st_banner")$

        $CMS_SET(resolution,"Keyvisual_large")$

        $CMS_SET(image,element.get(useLang,"st_banner").get())$

        <div class="slide" $CMS_VALUE(editorId())$>

           <figure$CMS_VALUE(editorId(editorName: crop_editorName, target: crop_target, element: crop_element, resolution:resolution))$>

               <img src="$CMS_REF(image,res:resolution)$" height="435px" width="1280px" border="0">

           </figure>

              </div>

    $CMS_END_FOR$

</div>

0 Kudos

Hallo Marcus,

ich hab jetzt nur einen ganz schnellen Blick drauf geworfen.

Sehe ich es richtig, dass sich der editorName von dem Namen deiner Eingabekomponente für das Bild unterscheidet? (crop_editorName und image)

Viele Grüße

Michalea

0 Kudos

Hallo Michaela,

ja, in crop_editorName steht "st_banner" der Name der Eingabekomponete und in image steckt das eigentliche Bild. Sie sind von daher unterschiedlich.

Grüße

Marcus

0 Kudos

Hallo Marcus,

du könntest dein Problem vermutlich auch dadurch lösen, dass du den Code etwas anders verteilst.

Im Slideshow-Absatz gibst du einfach über ein $CMS_VALUE$ die FS_LIST aus:

<div class="slider-main">

    $CMS_VALUE(st_elements)$

</div>

Im Absatz für die einzelnen Slides kannst du dann die Ausgabe der Bilder vornehmen inkl. editorId:

<div class="slide" $CMS_VALUE(editorId())$>

   <figure$CMS_VALUE(editorId(editorName: "st_banner", resolution:"Keyvisual_large"))$>

       ...

    </figure>

</div>


So kannst du dir target und element ganz sparen und hast ausßerdem eine bessere Trennung. Wäre das eine Alternative für dich?


Viele Grüße

Tim


0 Kudos

Hallo Tim,

So geht es. Danke für die Hilfe Smiley Happy

Viele Grüße

Marcus

0 Kudos