alwolf
I'm new here

#global.node.uid in Vorlage für Weiterleitungs-Seiten

Jump to solution

In der Vorlage für einen externen Link habe ich keinen Zugriff auf die PageRef uid mit #global.node.uid,

damit ich anhand der Vorlage allerdings in den FOS schreiben kann, benötige ich diese.

Via #global.id bekomme ich die ID des PageRef Elements. Gibt es eine public API mit der ich zu einer ID eine UID finden kann, bzw. das Element der ID? Alternativ gibt es einen anderen Trick um in diesem Kontext an die UID der Seite zu gelangen?

Mit freundlichen Grüßen,

Alexander Wolf, USU AG

0 Kudos
1 Solution

Accepted Solutions

Um die Frage zu schließen:

de.espirit.firstspirit.access.store --> getStoreElement(long id): IDProvider

Hiermit bekomme ich den IDProvider und darüber die uid = refname.

Damit kann ich dann auch die notwendigen Attribute in den FOS schreiben.

Vielen Dank für die Unterstützung @Holger Höbbel

View solution in original post

0 Kudos
7 Replies
marza
I'm new here

Hallo Alexander,

vielleicht hilft Dir die folgende Seite weiter. Meines Wissen nach existiert aber #global.node.uid nicht.

Natürlich gibt es API, um über einen Store per UID oder ID ein Store-Element (also eine z.B. eine PageRef) zu laden: API-Dokumentation.

Was Du dazu allerdings benötigst ist ein FS-Context wie er in Executables zu Einsatz kommt. Dort kann man via requireSpecialist-Methode einen StoreElementAgent laden. Das kann man ber aus einem Template ohne weiteres nicht machen und muss eine Executable bzw. ein Bean-Shell-Script schreiben.

Grüße Marian

0 Kudos

Mit welcher API kann ich im StoreElementAgent anhand der page-id (nicht uid) das Element laden?

loadStoreElement(String uid, IDProvider.UidType uidType, boolean release)

Hier benötige ich eine UidType uid -- oder gibt es einen UidType der der "id" entspricht?

Den Script-Kontext kann ich herstellen, das ist kein Problem.

0 Kudos

Hallo Alexander,

kannst du uns einmal deinen Templatecode schicken, damit wir dein Szenario besser nachvollziehen können?

Viele Grüße

Michaela

0 Kudos

Hallo Michaela!

Klar hier sind die relevanten Schnipsel:

FS_SCREEN1.png

linktemplate:

<supplementary>

          <attributes>

                    <PageRef uid="$CMS_RENDER(script:"refname_for_id", "id":#global.id)$">

                              <pageType>link</pageType>

                              <targetUrl>$CMS_VALUE(#global.ref.url)$</targetUrl>

                    </PageRef>

          </attributes>

</supplementary>

skript refname_for_id:

//!BeanShell

var id = gc.getVariableValue("id");

context.logInfo("find refname for id" + id);

StoreAgent storeAgent = ((SpecialistsBroker) context).requireSpecialist(StoreAgent.TYPE);

/**

  *               Wie bekomme ich vom storeAgent die uid zur object-id ?

  */

result.setValue("refname");

Die Frage ist nun, wie ich im Skript (siehe Kommentar-Block) die entsprechend uid anhand der objekt-id bekommen kann.

0 Kudos

Hallo Marian,

könntest du das bitte weiter ausführen? Ansonsten muss ich das Ticket am Helpdesk wieder öffnen.

0 Kudos

Natürlich gibt es API, um über einen Store per UID oder ID ein Store-Element (also eine z.B. eine PageRef) zu laden: API-Dokumentation.

In welcher Klasse?

0 Kudos

Um die Frage zu schließen:

de.espirit.firstspirit.access.store --> getStoreElement(long id): IDProvider

Hiermit bekomme ich den IDProvider und darüber die uid = refname.

Damit kann ich dann auch die notwendigen Attribute in den FOS schreiben.

Vielen Dank für die Unterstützung @Holger Höbbel

0 Kudos