captFuture
I'm new here

#global.section.id alternative bei absätzen in einem FS_CATALOG

Hallo Community,

Wir setzen sehr stark auf die eingabe von verschachtelten Absatztemplates mittels eines FS_CATALOG Formulars.

Die Verschachtelung kann auch das Ursprüngliche Template wieder inkludieren.

Ein Beispiel:

Es gibt ein 2Spalten Template mit 2 FS_CATALOG Eingabefeldern welches sich selbst wieder inkludieren kann um dann 3 oder auch 4 Spalten zu erhalten.

<div id="container_$CMS_VALUE(#global.section.id)$">

<div id="links_$CMS_VALUE(#global.section.id)$">

    $CMS_VALUE(st_content_left)$

<div>

<div id="rechts_$CMS_VALUE(#global.section.id)$">

    $CMS_VALUE(st_content_right)$

<div>

</div>


Die #global.section.id gibt immer die id des direkten absatzes in der Seite wieder und eine verschachtelte verwendung bekommt die selbe id, was in meinem Fall zu problemen führt, weil ich css klassen oder auch javascripts auf die ID des containers schreibe.

2 Fragen:

- Kann man feststellen ob ein Absatz in einer FS_CATALOG komponente verwendet wird?

- Kann man den verschachtelungsgrad feststellen (ebene 1/2/3...)

Ich habe diverse Dinge ausprobiert, kein Ansatz brachte mich zum Ziel ohne sehr obstruse abfragen zu machen oder mir spezielle zählvariablen zu schreiben.

Danke

Christoph

0 Kudos
5 Replies
mbergmann
Crownpeak employee

Hallo Christoph,

ich weiß jetzt nicht genau, wofür Du die IDs genau nutzt, aber ich hatte mal einen Fall wo wir einfach "irgendwelche" IDs brauchten. Da haben es dann schlicht Zufallszahlen getan. Wenn das bei euch auch passt, wäre es auf jeden Fall die einfachste Variante.

Wie man recht einfach Zufallszahlen erzeugt, hatte ich hier mal geschrieben.

Viele Grüße

Michael

0 Kudos

Hi zusammen,

intuitiv hätte ich gesagt, dass man für diesen Fall das Styling oder das Selektieren im JavaScript lieber anhand der Struktur vornehmen sollte anstatt von ids. Oder wenn es wirklich sehr zugeschnittenes Styling ist, dann aus einer Kombination: Am Element einen Namen/Id vergeben und dann im CSS eine Selektion mit Attribut und Verschachtelung vornehmen.

Grüße,

Hannes

0 Kudos
boersteken
Crownpeak employee

Hallo Christoph,

benötigst Du noch weitere Hilfe oder haben Dir die Antworten von Michael und Hannes bereits geholfen?

In diesem Fall wäre es super, wenn Du die "richtige Antwort" entsprechend markierst, damit auch andere

Community-Teilnehmer diese auf den ersten Blick finden. Solltest Du zwischenzeitlich eine eigene Lösung

gefunden haben, wäre es nett, wenn Du diese hier bereitstellst.

Viele Grüße,

Philipp

0 Kudos
tlegat
I'm new here

Hi Christoph,

ich würde auch prüfen, inwiefern Du nicht zumindest teilweise auf Klassen setzen kannst statt IDs zu nutzen. Aber es gibt ja so Fälle...

Vielleicht hilft Dir dann das:

- ID des Absatzes (global.section.id) +

- ID der Eingabekomponente (fiktiv oder Position innerhalb des Absatzes) +

- ID der For-Schleife (dazu in der Absatzvorlage nicht einfach den Katalog per $CMS_VALUE(st_catalog)$ ausgeben, sondern über eine if-Schleife wie in der Doku)

0 Kudos
philipp_mueller
I'm new here

Hallo zusammen,

ich denke, er hat dasselbe Problem wie wir.

Hier unsere Lösungen, die funktionieren:

Zu Punkt 1.

Es hilft nichts: Man muss in einem ersten Durchlauf alle Elemente der FS_CATALOG inkl. Unterelemente durchgehen und in einer Liste speichern, danach kann dann geprüft werden.

Zu Punkt 2.

Ideal wäre, wenn man den Grad der Ebenentiefe wüsste und dann so etwas wie class="level-2" oder data-depth="2" setzen kann.

In der Ausgabe kann man eine Hilfsvariable erstellen, die mit jeder Schleifentiefe einfach hochzählt. Dies liefert zumindest das gewünschte Ergebnis. Wie

Ich finde beides aber relativ umständlich...

Wir bräuchten die Info aber nicht nur für den Ausgabekanal, sondern zusätzlich auch in einer Bean, aber dazu hatte ich eine eigene Diskussion (FS_CATALOG context parent als Ebeneninfo) eröffnet.

0 Kudos