Search the FirstSpirit Knowledge Base
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
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
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
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.
Hallo Alexander,
kannst du uns einmal deinen Templatecode schicken, damit wir dein Szenario besser nachvollziehen können?
Viele Grüße
Michaela
Hallo Michaela!
Klar hier sind die relevanten Schnipsel:
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.
Hallo Marian,
könntest du das bitte weiter ausführen? Ansonsten muss ich das Ticket am Helpdesk wieder öffnen.
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?
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