2bitmarv
I'm new here

UID der aktuellen Seite ausgeben?

Hallo,

Ich habe aktuell das Problem, das ich für eine Anweisung die UID der aktuellen Seite benötige. Meine Annahme war das ich mittels #global.node.getUid() daran komme, doch wie die Doku ja preisgibt handelt es sich dabei um den parent. #global.ref.getUid() gibt garnichts aus. Ich benötige das resultat in einer Variablen. Wie wäre denn der korrekte Aufruf?

beste Grüße,

2bitmarv

0 Kudos
10 Replies
Peter_Jodeleit
Crownpeak employee

#global.ref.getUid() gibt garnichts aus.

Das sollte eine Fehlermeldung im Log (bzw. "Fehler der Vorschau") produzieren.

Meine Annahme war das ich mittels #global.node.getUid() daran komme, doch wie die Doku ja preisgibt handelt es sich dabei um den parent.

In welcher Doku steht diese Aussage? Das wäre ein Fehler in der Doku. #global.node.uid ist korrekt.

Peter
0 Kudos

Zitat aus der Doku:

"...Mittels #global.node wird immer die Startseite einer Seitengruppe oder einer Content-Projektion zurückgeliefert. Soll das aktuelle Element einer Content-Projektion oder einer Seitengruppe zurückgeliefert werden, sollte stattdessen #global.ref verwendet werden..."

#global.node.getUid() habe ich zuerst verwendet. Mein Ziel ist folgendes: Anhand einer Zeichenkette die sich in bestimmten Seiten in der UID immer wiederfindet kann ich entscheiden ob ich einen Bereich ausgebe oder nicht. Wenn ich jedoch generiere, dann finde ich stets die falsche UID und dazu noch immer die gleiche, egal auf welcher Seite ich mich befinde.

Ich ging davon aus das jeweils die UID der aktuell angezeigten Seite rausgerendert wird.

0 Kudos

Hallo Herr Biebrach!

Der eindeutige Bezeichner der Seitenreferenz (Struktur-Verwaltung) lässt sich mit

#global.node.uid

ausgeben bzw. weiterverarbeiten. Beispielsweise kann er innerhalb eine If-Anweisung verwendet werden:

$CMS_IF(#global.node.uid == "xyz")$

...

$CMS_END_IF$

Um den eindeutigen Bezeichner der Seite (Inhalte-Verwaltung) auszugeben/weiterzuverabeiten kann entsprechend

#global.page.uid

verwendet werden.

"...Mittels #global.node wird immer die Startseite einer Seitengruppe oder einer Content-Projektion zurückgeliefert. Soll das aktuelle Element einer Content-Projektion oder einer Seitengruppe zurückgeliefert werden, sollte stattdessen #global.ref verwendet werden..."

Dieser Passus aus dem Systemobjekt #global zeigt den Unterschied zwischen #global.node und #global.ref innerhalb einer Seitengruppe und Content-Projektion auf. Unabhängig von der Position innerhalb der Content-Projektion (Unterseite) liefert #global.node immer den URL zur Startseite/ersten Seite der Content-Projektion zurück - bei #global.ref jedoch wird der URL zur jeweiligen Unterseite zurückgeliefert.

Der eindeutige Bezeichner der Unterseiten kann sich nicht unterscheiden, sondern nur der URL. Daher wäre die Verwendung von #global.ref redundant, da jede Unterseite Teil des selben Knotens in der Struktur-Verwaltung ist.

Ich ging davon aus das jeweils die UID der aktuell angezeigten Seite rausgerendert wird.

Ist hier die Seite in der Inhalte-Verwaltung (#global.page) oder aber die Seitenreferenz in der Struktur-Verwaltung (#global.node) gemeint?

Könnten Sie bitte den genauen Anwendungfall skizzieren?

Vielen Dank und viele Grüße,

Sascha Rusch

0 Kudos

Wie ich feststelle bekomme ich bei beiden methoden die UID des Haupttemplates, egal ob ich auf die Struktur oder Inhalte zugreife. Ich scheine das Konzept noch nicht richtig verstanden zu haben. Wir haben hier ein Projekt mit mehreren Sprachen und verschiedenen Startseiten. Nur auf diesen Startseiten sollen openGraph Tags reingerendert werden. Dafür hielt ich die Lösung die UID auszulesen und eine IF zu formulieren die dann entsprechend agiert. Da nun immer die UID des haupttemplates ausgegeben wird funktioniert das natürlich nicht. Die Frage ist also wenn ich die Struktur heranziehe (was mir logischer erscheint als die Inhalte), wie bekomme ich dann daraus die UID der aktuelle angezeigten Seite? Das Haupttemplate bildet ja nur den Hauptrahmen einer Seite. Ich benötige ja quasi die UID der aktuellen "Zusammenstellung".

Gruß. Marvin Biebrach

0 Kudos

Wie ich feststelle bekomme ich bei beiden methoden die UID des Haupttemplates, egal ob ich auf die Struktur oder Inhalte zugreife.

Nicht über "#global.node.uid", damit wird die UID der Seite aus der Strukturverwaltung ausgegeben. Eventuell gibt es ein Missverständnis bezüglich des Begriffes "uid"?

Peter
0 Kudos

Wenn ich auf einer beliebigen Seite/Objekt alt+p drücke bekomme ich ein kleines Fenster mit Informationen angezeigt. Direkt in der ersten Zeile steht hinter der ID:(NUMMER) UID:(BEZEICHNUNG). Diese UID möchte ich gerne auslesen. Im Grunde ist das schon korrekt, aber es wird leider die UID des Haupttemplates gerendert. Nicht die UID der aktuellen Seite. Das verstehe ich eben nicht ganz.

0 Kudos

UID des Templates wäre "#global.node.page.template.uid". Ich kann das Verhalten so nicht nachvollziehen.

Peter
0 Kudos

Haben Sie das Problem mittlerweile lösen können?

0 Kudos

Nein nicht direkt. Ich weiß mittlerweile aber das es daran liegt, das eine Seitenvorlage Zugriff auf verschiedene andere nimmt mittels $CMS_RENDER(template:"xy")$ um die Seiten daraus zu erzeugen. Möglichweise ist das der Grund warum immer die gleiche UID ausgegeben wird. Jetzt war meine Idee in diesen anderen Vorlagen eine Variable zu definieren, aber ich weiß nich wie ich darauf zugreifen kann. Ein CMS_SET in der einen Vorlage macht sie noch lange nicht verfügbar in einer anderen. Wissen Sie da weiter?

0 Kudos