flba
I'm new here

Aktuell zu generierenden Datensatz aus der Node auslesen

Jump to solution

Guten Tag zusammen,

ich steh gerade vor folgendem Problem:

Ich durchsuche aktuell meine Seiten nach dem vorhanden sein eines bestimmten Datenquellenabsatzes, da ich Inhalte dessen zur Generierung eines spezifischen meta-Tags im Seitenheader benötige.

Hierfür übergebe ich aus der Header-Formatvorlage mittels

$CMS_SET(actNode, #global.node)$

den Knoten an mein Skript. Nun versuche ich mir folgendermaßen Zugriff auf die Daten zu beschaffen:

actNode = context.getVariableValue("actNode");

masterLng = context.getProject().getMasterLanguage();

params = actNode.getContent2Params();

data = params.getData(masterLng);

Allerdings bekomme ich hiermit lediglich die Menge aller gerenderten Datensätze zurück und nicht nur den aktuell an zu zeigenden. Besteht eine Möglichkeit sich lediglich den Datensatz zu beschaffen, der innerhalb der Seite auftauchen wird?

Mit freundlichen Grüßen,

Florian Bätz

0 Kudos
1 Solution

Accepted Solutions
hoebbel
Crownpeak employee

Hallo Herr Bätz,

ich halte diesen Ansatz [Skript] für nicht ganz so gelungen, deshalb hier mal eine Lösung mit Templatemitteln:

An der gewünschten Stelle _außerhalb_ der Tabellenvorlage können alle Datensätze, die auf der Seite dargestellt werden sollen, so bekommen werden:

$CMS_IF(!#global.multiPageParams.data.isNull)$$-- nur notwendig, wenn die Seitenvorlage auch für Seiten ohne Tabellenvorlage benutzt wird --$
     $CMS_FOR(datensatz,#global.pageParams.data)$
          $-- hier wird über alle Datensätze iteriert. Mit $CMS_VALUE(Datensatz.<Spaltenname>)$ kann der Inhalt einer beliebigen Spalte ausgegeben werden --$
          $-- wenn auf der Seite nur ein Datensatz ausgegeben wird, dann wird die Schleife natürlich auch nur einmal durchlaufen --$
     $CMS_END_FOR$
$CMS_END_IF$

Zur Not kann in der Schleife auch der Datensatz an das Skript übergeben werden, aber ich glaube nicht, dass das normalerweise sinnvoll ist Smiley Wink

Viele Grüsse aus Dortmund,

  Holger Höbbel

View solution in original post

0 Kudos
2 Replies
hoebbel
Crownpeak employee

Hallo Herr Bätz,

ich halte diesen Ansatz [Skript] für nicht ganz so gelungen, deshalb hier mal eine Lösung mit Templatemitteln:

An der gewünschten Stelle _außerhalb_ der Tabellenvorlage können alle Datensätze, die auf der Seite dargestellt werden sollen, so bekommen werden:

$CMS_IF(!#global.multiPageParams.data.isNull)$$-- nur notwendig, wenn die Seitenvorlage auch für Seiten ohne Tabellenvorlage benutzt wird --$
     $CMS_FOR(datensatz,#global.pageParams.data)$
          $-- hier wird über alle Datensätze iteriert. Mit $CMS_VALUE(Datensatz.<Spaltenname>)$ kann der Inhalt einer beliebigen Spalte ausgegeben werden --$
          $-- wenn auf der Seite nur ein Datensatz ausgegeben wird, dann wird die Schleife natürlich auch nur einmal durchlaufen --$
     $CMS_END_FOR$
$CMS_END_IF$

Zur Not kann in der Schleife auch der Datensatz an das Skript übergeben werden, aber ich glaube nicht, dass das normalerweise sinnvoll ist Smiley Wink

Viele Grüsse aus Dortmund,

  Holger Höbbel

0 Kudos

Generell würde ich auch auf die Skriptlösung verzichten, aber die Daten müssen noch etwas umfangreicher verarbeitet werden, da wird die reine Templatelösung schwierig.

Aber es klappt so in jedem Fall. Dankeschön!

0 Kudos