dunkelblau
I'm new here

PageGroup Directory in Übersichtsseite

Ist es möglich, die Seiten einer PageGroup auf einer übergeordneten Seite auszugeben?

Ich habe eine PageGroup auf einem Ordner erstellt. Auf der gleichen Ebene des Ordners, der die PageGroup-Seiten enthält, liegt die Übersichtsseite. Hier möchte ich die enthaltenen Seiten auflisten. Ich dachte eigentlich, ich gebe dort einfach das Directory aus, da die PageGroup ja einen eigenen Namen hat (pg_agencies), aber was passiert? Es wird einfach nur die Übersichtsseite ausgegeben....

Code ind er Übersichtsseite?

<CMS_HEADER>

  <CMS_FUNCTION name="PageGroup" resultname="pg_agencies>

          <CMS_CDATA_PARAM name="delimiter"><![CDATA[<br>]]></CMS_CDATA_PARAM>

            <CMS_CDATA_PARAM name="directoryRendering"><![CDATA[$CMS_VALUE(#nav.label)$]]></CMS_CDATA_PARAM>

            <CMS_CDATA_PARAM name="directoryRenderingSelected"><![CDATA[$CMS_VALUE(#nav.label)$]]></CMS_CDATA_PARAM>  

  </CMS_FUNCTION>

</CMS_HEADER>

$CMS_VALUE(pg_agencies.directory)$

Hat jemand eine Idee?

0 Kudos
3 Replies
marro
Crownpeak employee

Hallo Katrin,

das gewünschte Verhalten kannst Du über die API hinbekommen, indem Du Dir die PageGroup des entsprechenden Ordners holst und dann die Elemente daraus ausgibst.

Viele Grüße,

Donato

0 Kudos

Wie hole ich mir denn eine Seite bzw. einen Ordner?

Die Vorlagendoku reicht für diesen Fall nicht aus, denn mit #global... scheint es nicht zu gehen. Mir ist nicht ganz klar, wie ich die Methoden der API mit den Objekten, die mir in den Seitenvorlagen zur Verfügung stehen, verknüpfe.

0 Kudos
marro
Crownpeak employee

Hallo Katrin,

Du könntest z.B. folgendes tun: Du erstellst Dir zunächst ein Skript vom Typ "Vorlage". Innerhalb dieses Skriptes kannst Du über die API die PageGroups eines beliebigen Ordners auslesen und die Informationen, die Du brauchst, in einer Liste im Context speichern. Das Skript könnte z.B. so aussehen:

//!BeanShell
map = new java.util.ArrayList();
siteStoreRoot = gc.getUserService().getStore(de.espirit.firstspirit.access.store.Store.Type.SITESTORE, false);
pageGroupFolder = siteStoreRoot.getStoreElement(gc.getVariableValue("folderName"), de.espirit.firstspirit.access.store.IDProvider.UidType.SITESTORE_FOLDER);

for (int i = 0; i < pageGroupFolder.getPageGroups().length; i++) {
     map.add(pageGroupFolder.getPageGroups()[i].getName());
}

gc.getContext("PAGE").setVariableValue("list", map);

Dieses Skript liest die Namen der PageGroups eines Ordners aus und merkt sie sich im Context in der Liste "list".

In Deinem Seitentemplate baust Du dann folgenden Aufruf auf, der zunächst das gerade erwähnte Skript aufruft (parametrisiert mit dem Namen des Ordners, dessen PageGroups man auslesen möchte), und anschließend über die Elemente der Liste "list" iteriert und sie rausschreibt:

$CMS_RENDER(script:"test_1", folderName:"aboutus")$
$CMS_FOR(_w, list)$
     $CMS_VALUE(_w)$
$CMS_END_FOR$

Viele Grüße,

Donato

0 Kudos