christina
I'm new here

WEBeditInplaceBody nicht in For-Schleife einsetzbar Alternative?

Hallo,

eine Frage zu Content Highlighting:

Durch WEBeditInplaceBody können ja Inhaltsbereichen hervorgehoben werden und die jeweiligen Inhaltsbereiches werden direkt ausgegeben.

Wird nun der Inhaltsbereich nicht wie normalerweise über $CMS_VALUE(#globa.page.body("content"))$

sondern über eine For-Schleife eingebunden:

               $CMS_FOR(myContent,#global.page.body("content").children.toList)$

                     $CMS_VALUE(myContent)$

                         .....

                        $CMS_VALUE(myContent)$

                $CMS_END_IF$

ersetzt der $CMS_RENDER(template:"WEBeditInplaceBody", name:"content")$ Highlighting-Renderaufruf nicht die For-Schleife.

wie kann ich denn die Inhaltsbereiche die über eine For-Schleife eingebunden werden, dennoch Highlighten?

Schöne Grüße

Christina

0 Kudos
5 Replies
MarcusDau
Occasional Collector

Ich würde die einzelnen Bereiche folgendermaßen highlighten:

$CMS_RENDER(template:"WEBeditInplaceEditBegin")$$CMS_RENDER(template:"WEBeditInplaceAttributeBegin", name:"myContentLAUFENDENUMMER")$$CMS_VALUE(myContent)$$CMS_RENDER(template:"WEBeditInplaceAttributeEnd")$$CMS_RENDER(template:"WEBeditInplaceEditEnd")$

Code ungetestet, sollte aber so ungefähr funktionieren.

Grüße

Marcus

0 Kudos

Hallo Marcus,

Danke für die schnelle Antwort, aber leider funktioniert es nicht.

Und ich denke es würde auch eher die einzelnen Absätze, die in diesem Inhaltsbereich enthalten sind, Highlighten,

aber nicht den gesamten Inhaltsbereich, wenn man auf diesen klickt.

Sonst noch irgendwelche Ideen?

Schöne Grüße

Christina

0 Kudos
gockel
Crownpeak employee

Hallo Christina,

$CMS_FOR(myContent,#global.page.body("content").children.toList)$

    $CMS_VALUE(myContent)$ 

       .....

    $CMS_VALUE(myContent)$

$CMS_END_IF$

abgesehen davon, dass ich nicht weiss ob das abschließende $CMS_END_IF$ hier vielleicht ein $CMS_END_FOR$ sein sollte, frage ich mich, warum man sowas macht.

wie kann ich denn die Inhaltsbereiche die über eine For-Schleife eingebunden werden, dennoch Highlighten?

Genau das passiert ja durch den obigen Templatecode NICHT, sondern es werden die Absätze in der Schleife ausgegeben und das sogar noch mehrfach (doppeltes $CMS_VALUE(myContent)$).

Also: welcher Anwendungsfall steckt dahinter, die Absatziteration selbst zu machen und nicht FirstSpirit zu überlassen?

Noch ein genereller Hinweis:

Das $CMS_FOR kann mit dem Iterable welches von der Methode "children" zurückgeliefert wird, direkt umgehen. Es sollte also vermieden werden #toList() aufzurufen.

Ist:

$CMS_FOR(myContent,#global.page.body("content").children.toList)$

Soll:

$CMS_FOR(myContent,#global.page.body("content").children)$
0 Kudos

Guten Morgen Herr Gockel,

Ich habe mich leider verschrieben in der Eile, das $CMS_END_IF$ sollte natürlich ein $CMS_END_FOR$ sein 🙂

Nun zu Ihrer Frage, mein Anwendungsfall ist dieser, ich habe in meiner Marginalspalte immer das gleiche CSS für die eingebundenen Absätze, bis auf der letzte Absatz, der soll ein eigenes CSS erhalten deshalb die FOR-Schleife in der abgefragt wird, ob es die letzte Iteration ist und dann wird eine Variable gesetzt.

$CMS_FOR(myMargin,#global.page.body("marginal").children)$

    $CMS_IF(#for.isLast)$$CMS_SET(setLast,"last")$$CMS_END_IF$

    $CMS_VALUE(myMargin,default:"")$

$CMS_END_FOR$

vielleicht ist es auch ganz einfach, aber ich entwickle noch nicht lange in FirstSpirit und habe schon das ein oder andere ausprobiert, aber leider noch nicht den gewünschten Erfolg gehabt.

und danke für den Tipp mit #toList(). Das wusste ich gar nicht.

Schöne Grüße

Christina

0 Kudos

Hallo Christina,

ich würde das so lösen:

Im Seitentemplate die ID des letzten Absatzes ermitteln:

$CMS_FOR(section,#global.page.body("marginal").children)$

$CMS_IF(section.isInOutputIncluded(#global.language) && section.isInLifespan())$

$CMS_SET(lastSectionId,section.id)$

$CMS_END_IF$

$CMS_END_FOR$

Die Absätze ganz normal ausgeben mittels $CMS_VALUE(#global.page.body("marginal"))$

Bei der Angabe des CSS für die Absätze prüfen, ob die ID des aktuellen Absatzes die ID des letzten Absatzes ist und entsprechend das korrekte CSS ausgeben.

$CMS_IF(#global.section.id=lastSectionId)$

  "CSS des letzten Absatzes"

$CMS_ELSE$

  "Standard CSS"

$CMS_END_IF$

Tipp: Beim manuellen Iterieren über Kinder jeder Art sollte immer berücksichtigt werden, ob diese Kinder wirklich alle gültig sind.

Absätze können sprachabhängig ausgeblendet werden, zeitlich begrenzte Anzeigedauern haben {ist nun beides im Beispiel berücksichtigt}, Menüebenen können aus der Navigation und/oder Sitemap ausgeblendet werden, Seiten müssen nicht immer übersetzt sein...

Viele Grüsse aus Dortmund,

  Holger

0 Kudos