nicbel
I'm new here

Template Programmierung - Inhalte-Verwaltung durchlaufen

Hallo community,

ähnlich wie bei dem Beitrag Medienordner auslesen versuche ich alle Inhaltsseiten vom Wurzelknoten an zu durchlaufen. Leider will es nicht funktionieren. Die Synthax in einem Skript wäre:

import de.espirit.firstspirit.access.store.Store;

import de.espirit.firstspirit.access.store.pagestore.Page;

us = context.getUserService();

langs = context.getProject().getLanguages();

store = us.getStore(Store.Type.PAGESTORE, false);

context.logInfo("" + store.getClass());

children = store.getChildren(Page.class,true);

childIt = children.iterator();

while(childIt.hasNext()) { ...}

Aber wie sieht das im Template aus?

0 Kudos
10 Replies
gockel
Crownpeak employee

Hallo,

hier stellt sich mir zunächst die Frage nach dem Sinn hinter einer solchen Iteration, die im Hinblick auf die in FS verwaltbaren Mengengerüste und der damit einhergehenden Performance als absolut kritisch zu bewerten ist.

Könnten Sie die dahinterstehenden Anforderungen vielleicht erläutern.

0 Kudos

An jeder Inhaltsseite sollen Schlagworte gepflegt werden und über eine Absatzvorlage sollen Schlagworte ausgewählt werden können und in der Ausgabe eine Linkliste erscheinen mit allen Inhalten welche die ausgewählten Schlagworte haben.

0 Kudos
boesebeck
Crownpeak employee

Hallo,

ich würde die Liste der Schlagworte innerhalb einer Tabelle ablegen, die dann über eine ContentList / ComboBox / Linkliste in einer Seite eingebunden wird. So könntest du später über den Referenzgraph auf den Datensatz herrausfinden wo der Datensatz verlinkt/referenziert wird.

0 Kudos

Diese Lösung vermeidet auf jeden Fall quadratische Laufzeiten der Generierung!

Peter
0 Kudos

Die Schlagworte liegen in einer Datenbank und können im Seitentemplate über das Objekt

CMS_INPUT_LIST ausgewählt werden. Aber damit habe ich doch noch keine Zuordnung zur Seitenreferenz geschaffen. Brauche ich nicht dann noch eine Zuordnungstabelle Referenz und Schlagworte? Wie kann ich im Seitenvorlagen-Template einrichten, dass ich direkt in die Datenquelle schreibe?

0 Kudos

Herr Bösebeck hat vorgeschlagen, über den Refernzgraphen zu gehen.

Das Vorgehen wäre dann wie folgt:

  • Auf der Seite werden Schlagworte verlinkt.
  • Jedes Schlagwort ist ein Eintrag in den Datenquellen (de.espirit.or.schema.Entity).
  • Über de.espirit.firstspirit.access.store.templatestore.Schema#getIncomingReferences(Entity) bekommt man alle Knoten, die ebenfalls dieses Schlagwort referenzieren.
  • Für referenzieredeKnoten aus dem Inhaltebereich muss dann noch auf die gleiche Weise der Übergang in die Struktur gemacht werden.

-> Damit hat man dann eine Menge von Knoten, die dieses Strukturelement referenzieren. Daraus kann man dann mit normalen Templatemitteln die von Ihnen gewünschten Links erzeugen.

Es bietet sich an, diese Logik in einer Bibliothek zu kapseln, wo man auch ein Caching einbauen kann, damit bei der Generierung die Listen für ein Schlagwort nicht mehrfach aufgebaut werden müssen.

Peter
0 Kudos

Hallo Herr Jodeleit,

sie meinen die Datenbank-Einträge (Schlagwörter) werden über eine  Contentlist in die Seitenvorlage eingebunden und können dort ausgewählt  werden. Diese Referenzierung kann dann hinterher ausgelesen werden.

0 Kudos

Genau, Contentlist wäre eine Möglichkeit.

Peter
0 Kudos

Ich hatte vor die Auswertung im Template zu machen. Quasi eine Absatzvorlage für Linklisten die alle Referenzen mit den angegebenen Schlagwörtern ausgeben. Habe aber Probleme mit der Synthax. Wie komme ich zum Beispiel an das Schema um die Knoten auszulesen?

0 Kudos