Search the FirstSpirit Knowledge Base
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
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
Viele Grüsse aus Dortmund,
Holger Höbbel
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
Viele Grüsse aus Dortmund,
Holger Höbbel
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!