Search the FirstSpirit Knowledge Base
Hi,
ich würde gerne ein Script erstellen, mit dem die Struktur ausgelesen wird.
Zusätzlich muss überpüft werden ob der Content für den jeweiligen Sprachkanal übersetzzt ist.
Wie gehe ich am besten vor?
siteStore = context.getUserService().getStore(Store.Type.CONTENTSTORE , false);
siteStoreList = siteStore.getChildren(StoreElement.class, true).toList();
Die Liste bekomme ich bereits ausgelesen, jetzt ist die Frage, lieber den Contentstore oder den Sitestore auslesen?
Wie komme ich an die anderen Informationen dran?
z.B. Seite wird an mehreren Stellen in der Struktur referenziert ?
z.B. is Translated ("DE") ???
Danke im Vorraus
PageRef.getContent2Params()
Ich lese immer den Sitestore aus. Das ist ja auch meine Struktur.
An die anderen Infos kommst doch relativ leicht ran.
Iterator über Deine siteStoreList laufen lassen und dann an dem jeweiligen Element abfragen:
a) element.getIncomingReferences() (hier bekommste nen ReferenceEntry[] zurück; einfach die Anzahl auslesen!)
b) element.getPage().isTranslated(Language)
Grüße
Marcus
siteStoreList = siteStore.getChildren(StoreElement.class, true).toList();
Davon ist aus Performancegründen dringend von abzuraten, da so alle Kinder in den Speicher geladen werden.
Verwendet werden sollte dieses Pattern:
for (IdProvider element: siteStore.getChildren(IdProvider.class, true)) {
// todo
}
jetzt ist die Frage, lieber den Contentstore oder den Sitestore auslesen?
Für die Struktur kommt nur der "SiteStore" in Frage. Dann sollte auch überlegt werden, vielleicht in der oberen Schleife statt IdProvider.class direkt PageRef.class zu verwenden.
Super vielen Dank für die Antworten.
Komme ich eigentlich auch irgendwie an den URLCreator ran ?
Ich befinde mich momentan im Projekt, das Script wird somit auch aus dem Projekt ausgeführt.
Nutze somit momentan den GUIContext, der stellt leider keine "getURLCreator" Methode zur Verfügung ???
Ist es eigentlich möglich die URLs zu z.B. einzelnen News über ein Script auszulesen (content Projektion) ? z.B. ich nutze eine Seite für die Darstellung von n News.
Könnten Sie vielleicht etwas genauer schreiben was Sie bauen wollen?
Eine Liste von allen Urls, inkl. der Contentprojektionen kann man sehr einfach über die Navigationssfunktion erstellen, die in Templates zur Verfügung steht. Damit würde man sich jede Menge Scripting sparen.
Selbstverständlich:
Wir haben eine Webseite, auf der sich zuerst ein Benutzer anmelden muss (Persoanlisation)
Die Seite ist somit personalisiert. Der Benutzer soll dann die Möglichkeit haben einzelne Seiten zu seinen Favoriten hinzuzufügen (ähnlich wie Bookmarks). Die Seiten sollen aus einer Tabelle ausgelesen und in Form von einer Auswahlliste zur Verfügung gestellt werden. Über die Auswahlliste wählt der User dann seine Favoriten aus (so in etwa).
Das Script soll alle möglichen Seiten (aus der Seitenstruktur) parsen und diese in diese Tabelle schreiben.
Die Tabelle soll ungefähr wie folgt aussehen.
SITESTORE_ID, URL, LANGUAGE (Sprachkanal), NAME
Momentan habe ich noch das Problem, dass ich die URL nicht generiert bekomme. Ich gehe aber davon aus, dass ich die URL dann generiert bekomme, wenn ich mein Script direkt im Auftrag als Aktion ausführe und nicht im CMS System selbst. Dadurch steht mir auch ein anderer Context zur Verfügung, richtig???
Als nächstes würde ich auch gerne die Datenquelle auswerten (z.B. News). Die News würde über eine Detailsseite abgebildet werden. Wie würde ich die URLs zu den einzelnen news ermitteln, geht das überhaupt???
Ich vermute nämlich, dass das garnicht möglich ist, da eine Projektionsseite keinen festen Bezug zu den einzelnen Datensätzen hat. Ich könnte z.B. über einen contentSelect die einzelnen News auf einer Übersichtsseite auslesen, wieviele News am Ende aber ausgegeben werden und welche Seiten die Detailsseite darstellen, weis ich doch garnicht?
Und wie erstelle ich eine URL aus dem Objekt bzw. bekomme den Serverrelativen Pfad heraus ???
...schau doch mal hier.
Ist zwar eigentlich für die Google-Sitemap, aber mit dieser Funktion bekommst du auf jedenfall alle Seiten deiner Webseite.
Ich denke das ist auf jedenfall schon mal ein gute Grundlage.
Viele Grüsse
Frank Zöller
Vielen Dank. Das ist schon ganz hillfreich.
Ich müsste jetzt allerdings noch die ganze Seitenstruktur in einer Tabelle speichern, zudem müssten auch alle Sprachkanäle ausgewertet werden.