- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Uid aus Catalog-Cards auslesen
Hallo Commuity!
Aktuell mรถchten wir eine Seiten-Serie bauen. Der hauptsรคchliche Inhalt besteht pro Seite aus einer jeweils anderen fest definierten Menge, die wir in entsprechen viele "Seiteninhalt"-Absatzvorlagen auslagern mรถchten.
Jede dieser Seiten soll nur ein "Seiteninhalt"-Absatzelement beinhalten. Daher kรถnnen wir nicht den Inhaltsbereich der Seitenvorlage verwenden, da dieser sich nicht auf ein einzelnes Element beschrรคnken lรคsst.
Stattdessen stellen wir nun einen Catalog zur Verfรผgung.
Was uns vor eine Herausforderung stellt:
Fรผr jede der verschiedenen "Seiteninhalt"-Absatzvorlagen gibt es ein eigenes CSS und JS.
Ich dachte ursprรผnglich ich kรถnne auf der Seitenvorlage einfach die Uid des in den Catalog eingepflegten Elements auslesen. Das ist leider nicht so leicht wie ich dachte, da die Methode getUid() fรผr die Card-Objekte nicht zur Verfรผgung steht.
Die einzige Mรถglichkeit die mir noch einfรคllt zwischen den Elementen zu unterscheiden, wรคre aktuell ein Formularfeld innerhalb des Absatzes, dessen Wert ich im Seitentemplate auslese. (zb. ein Textfeld, welches den Referenznamen beinhaltet)
Das Formularfeld kann ich zwar auf hidden setzen, damit die Redakteure keine รnderungen vornehmen, aber wirklich schรถn finde ich diese Variante eher nicht.
Hat eventuell noch Jemand einen besseren Einfall?
Oder eine Mรถglichkeit die Uid auszulesen, oder den Inhaltsbereich zu beschrรคnken, die ich nicht gesehen habe?
Viele Grรผรe,
Annika
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Annika,
ich glaube da gibt es ein Missverstรคndnis. Im Catalog selber sind die "enthaltenen" Objekte eben keine FirstSpirit-Objekte aus den jeweiligen Stores sondern eben schlicht einfache innere Card-Objekte, d.h. eine Art "Container" die nur im Catalog selbst "leben". Diese basieren ja lediglich auf Templates. Darum haben sie selbst auch einfach gar keine UID (=Referenznamen). Um an das Template (und darรผber an dessen UID) zu kommen, auf dem der Inhalt basiert, musst Du einfach auf der Card .getTemplate() (oder in Beanshell-Kurzform auch .template) benutzen. Von dem bekommst Du dann รผber .getUid() (oder .uid) dessen Referenznamen.
Ich bin immer noch nicht ganz sicher, von was Du genau die UID brauchst - wirklich vom Template des inneren Elementes? Ich vermute aber mal ja, da Du was von templatespezifischem JS/CSS geschrieben hast. Von daher mรผsste das card.template.uid fรผr DIch passen (card natรผrlich durch den Variablennamen "Deines" Card-Objektes ersetzen).
Die Methode getId() hat mit einer UID (=Referenzname) รผberhaupt nichts zu tun sondern liefert eine UUID - einen "Universally Unique Identifier". Das ist letztlich nur eine zufรคllige Zeichenkette, die aber so erzeugt wird, dass die Wahrscheinlichkeit dass irgendwo auf der Welt irgendwer in irgendeinem FS-Projekt dieselbe UUID erzeugt praktisch null ist. Man kann diese UUID benutzen, wenn man aus diversen Grรผnden im Ausgabekanal einfach eine "stabile" eindeutige Zeichenkette fรผr jedes Card-Objekt braucht, um verschiedene Cards voneinander zu unterscheiden. Das ist meist der Fall im Zusammenhang mit irgendwelchen JS-Funktionen oder auch zum gezielten Neuladen eines solchen inneren Elementes nach einer รnderung im ContentCreator. Fรผr Deinen Anwendungsfall bringt es aber nichts.
Mit der Doku ist es so, dass die Online-Version immer die aktuellste ist - allerdings momentan noch aus technischen Grรผnden ohne Suchfunktion. Vorteil: Sie ist immer aktuell. Nachteil: Keine Suche und auรerdem kรถnnten da natรผrlich Dinge drin stehen, die es in Eurer Version (noch) gar nicht gibt wenn die รคlter ist. Inhaltlich sind die Dokus (wenn man dieselbe FS-Version hat) identisch.
Ich hoffe ich konnte etwas zum Verstรคndnis beitragen ๐
Viele Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Annika,
mir ist noch nicht ganz klar, von was genau Du die UID brauchst. Die vom Absatz-Template auf dem das Element im FS_Catalog basiert?
Daran kommst du รผber card.template.uid, siehe hier: Online Dokumentation FirstSpirit - Datentyp Card
Falls das nicht das ist was Du meinst, wรคre ein bisschem Code hilfreich, also beteiligte Templates inkl. Formular- und Ausgabekanal - zumindest die relevanten Teile.
Viele Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Michael,
genau! Ich mรถchte den Referenznamen des Elements, welches im Catalog gepflegt wurde.
Unsere Lokale Dokumentation habe ich erfolglos nach der Methode durchsucht.
Da scheint es einen Schiefstand zu geben. Sind wir dazu angehalten eher die Online-Dokumentation zu verwenden? Ist die Lokale nicht zuverlรคssig? ODerbringe ich gerade etwas durcheinander?
Ich verwende die Suchfunktion recht gern, die online nicht zur Verfรผgung steht, daher nutze ich meistens die Lokale Doku um Informationen nachzuschlagen.
Trotz allem gibt "getId" nur eine Kombination aus Zahlen und Buchstaben zurรผck, oder? Wenn ich das im Template abfrage wird es furchtbar im Fehlerfall nachzuvollziehen zu welchem Template diese ID gehรถrt.
Was ist aus der Methode "getUid" geworden, die einem den Templatenamen zurรผck gibt? Warum hat man sich dazu entschieden so eine Methode nicht mehr anzubieten?
Vielen Dank und viele Grรผรe,
Annika
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Annika,
ich glaube da gibt es ein Missverstรคndnis. Im Catalog selber sind die "enthaltenen" Objekte eben keine FirstSpirit-Objekte aus den jeweiligen Stores sondern eben schlicht einfache innere Card-Objekte, d.h. eine Art "Container" die nur im Catalog selbst "leben". Diese basieren ja lediglich auf Templates. Darum haben sie selbst auch einfach gar keine UID (=Referenznamen). Um an das Template (und darรผber an dessen UID) zu kommen, auf dem der Inhalt basiert, musst Du einfach auf der Card .getTemplate() (oder in Beanshell-Kurzform auch .template) benutzen. Von dem bekommst Du dann รผber .getUid() (oder .uid) dessen Referenznamen.
Ich bin immer noch nicht ganz sicher, von was Du genau die UID brauchst - wirklich vom Template des inneren Elementes? Ich vermute aber mal ja, da Du was von templatespezifischem JS/CSS geschrieben hast. Von daher mรผsste das card.template.uid fรผr DIch passen (card natรผrlich durch den Variablennamen "Deines" Card-Objektes ersetzen).
Die Methode getId() hat mit einer UID (=Referenzname) รผberhaupt nichts zu tun sondern liefert eine UUID - einen "Universally Unique Identifier". Das ist letztlich nur eine zufรคllige Zeichenkette, die aber so erzeugt wird, dass die Wahrscheinlichkeit dass irgendwo auf der Welt irgendwer in irgendeinem FS-Projekt dieselbe UUID erzeugt praktisch null ist. Man kann diese UUID benutzen, wenn man aus diversen Grรผnden im Ausgabekanal einfach eine "stabile" eindeutige Zeichenkette fรผr jedes Card-Objekt braucht, um verschiedene Cards voneinander zu unterscheiden. Das ist meist der Fall im Zusammenhang mit irgendwelchen JS-Funktionen oder auch zum gezielten Neuladen eines solchen inneren Elementes nach einer รnderung im ContentCreator. Fรผr Deinen Anwendungsfall bringt es aber nichts.
Mit der Doku ist es so, dass die Online-Version immer die aktuellste ist - allerdings momentan noch aus technischen Grรผnden ohne Suchfunktion. Vorteil: Sie ist immer aktuell. Nachteil: Keine Suche und auรerdem kรถnnten da natรผrlich Dinge drin stehen, die es in Eurer Version (noch) gar nicht gibt wenn die รคlter ist. Inhaltlich sind die Dokus (wenn man dieselbe FS-Version hat) identisch.
Ich hoffe ich konnte etwas zum Verstรคndnis beitragen ๐
Viele Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Okay, super! Vielen Dank! : D
Ich glaube mir ist jetzt wirklich einiges klarer und den Referenznamen kann ich jetzt auch auslesen!

