mfitt
Returning Observer

Section GID auslesen

Jump to solution

Hallo,

ich versuche seit Stunden die GID einer Section in der Absatzvorlage auszulesen.

Die ID die ich mit $CMS_VALUE(#global.section.id)$ bekomme, möchte ich nicht. Ich möchte quasi den identifier, wie er auch im CaaS steht. Beispiel: 94033605-82e8-408b-a46f-2612746e9da6

Wenn ich folgendes in den Regeln mache, bekomme ich die korrekte ID: https://docs.e-spirit.com/odfs/vorlagenentwick/regeln/formulareigensc/eigenschaft-gid/index.html

Aber wie bekomme ich diese ID über Code in der Absatzvorlage?

Viele Grüße

Marcel

0 Kudos
1 Solution

Accepted Solutions
hoebbel
Crownpeak employee

Hallo Marcel,

ich wurde gerade darauf aufmerksam gemacht, dass mit 2022.1 der GidAgent entsprechend erweitert wurde, so dass nun auch die Gid eines IDProviders ausgelesen werden kann. 

Der Template Code sieht dann beispielsweise so aus, um die GID der aktuellen Seite auszulesen:
$CMS_SET(gidAgent,#global.requireSpecialist(class("de.espirit.firstspirit.common.GidAgent").TYPE))$
$CMS_VALUE(gidAgent.getGid(#global.page))$

Tut mir sehr leid, dass mir die Änderung durchgerutscht war 😞
Ich hoffe, dass die falsche Antwort keinen größeren Aufwand verursacht hat.

Viele Grüße
Holger

View solution in original post

0 Kudos
4 Replies
hoebbel
Crownpeak employee

Hallo Marcel,

die GID von IDProvidern ist über die API (und somit auch im Template) nicht auslesbar. 

Warum reicht denn die (serverweit eindeutige) ID des Absatzes nicht aus?

Wenn es einen Grund gibt, warum Du die GID zwingend benötigst, so stell bitte einen entsprechenden Änderungswunsch ein, dass die GID von IDProvidern über die API erreichbar sein soll.

Viele Grüße
Holger

P.S. Technisch wird die GID in der Registry gespeichert. Über die Persistenz des Knotens selber ist sie also nicht erreichbar.

P.P.S. Wenn ich mich richtig erinnere, wird die GID nur erzeugt, wenn sie angefragt wird. Knoten, die weder über die JSON Funktion generiert wurden noch deren GID per Regel angefragt wurde, haben also keine GID. 

P.P.P.S. Workaround, wenn die GID zwingend benötigt wird, wäre bei einem neuen! Projekt, in jedem Absatz eine versteckte Eingabekomponente unterzubringen, die die GID per Regel speichert.  Davon rate ich aber dringend ab!

0 Kudos
mfitt
Returning Observer

Hallo Holger,

nunja, es wird damit in der Frontendanwendung, die mit den CaaS Daten arbeitet, ein Direktlink/Ankerlink zu bestimmten Section gebildet. Und da das die eindeutige ID der Section ist, bietet es sich an dies zu verwenden

Im FS möchte ich diesen Direktlink in einem Feld generieren, damit ein Redakteur diesen Link für z.b. externe PDF rauskopieren kann.

Über die Regel bekomme ich auch die korrekte GID, wie sie im CaaS steht. Die ist auch fix und ändert sich nicht.

 

Kann ich denn per Regel ein Feld mit mehreren Variablen befüllen um eine URL zusammenzusetzen? Oder müsste ich das irgendwie per Skript machen?

Viele Grüße
Marcel

0 Kudos
hoebbel
Crownpeak employee

Hallo Marcel,

ich wurde gerade darauf aufmerksam gemacht, dass mit 2022.1 der GidAgent entsprechend erweitert wurde, so dass nun auch die Gid eines IDProviders ausgelesen werden kann. 

Der Template Code sieht dann beispielsweise so aus, um die GID der aktuellen Seite auszulesen:
$CMS_SET(gidAgent,#global.requireSpecialist(class("de.espirit.firstspirit.common.GidAgent").TYPE))$
$CMS_VALUE(gidAgent.getGid(#global.page))$

Tut mir sehr leid, dass mir die Änderung durchgerutscht war 😞
Ich hoffe, dass die falsche Antwort keinen größeren Aufwand verursacht hat.

Viele Grüße
Holger

0 Kudos
mfitt
Returning Observer

Hallo Holger,

alles gut 🙂 danke, das klappt.

Viele Grüße
Marcel

0 Kudos