Search the FirstSpirit Knowledge Base
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
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
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
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
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)
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.