HenningSchneidr
I'm new here

Navigations-root via Variable bestimmen

Hallo zusammen,

ich bin gerade dabei eine Template-Satz zu erstellen, den man bei ähnlichen Projekten wieder verwenden kann und dort dann nur mit ein "paar Klicks" konfiguriert.

Dies alles ist erstmal nur ein "proof-of-concept" und soll später "nur" das initiale Setup für ein Projekt vereinfachen/vereinheitlichen.

Die Anforderung im Detail:

  • Ich würde gern die Möglichkeit haben, mir projekt(-/mandanten-)spezifisch die Anzahl der Navigationen zu konfigurieren.
  • Häkchen setzen welche Navi ich angezeigt haben will
  • via Referenzname angeben von wo aus die Navigation sich aufbauen soll
projekt_einstellungen.png
  • Das SeitenTemplate ist relativ generisch gehalten sein
  • mit dem Wert von "area" wird im RenderingSkript jeweils die gewünschte(n) Variable(n) aufgelesen

Abgrenzung:

Die jeweiligen Navigationen müssen, immer noch, mit dem Projekt-spezifischen MarkUp ge"wrapped" werden, nach dem Projekt-Setup

aufbau_standard_vorlage.png
  • im Strukturbaum wäre dann ein spezieller Ordner angelegt der alle benötigten "Sonder"navigations-Bäume beinhaltet
  • unterhalb der Startknoten dieser "Sonder"navigationen liegen die für die Anzeige gewünschten Seitenreferenzen
site_architect_navi_struktur.png
  • im RenderingSkript für die Navigation wird der gewünschte "root"-Knoten ermittelt (mit Fallback auf "root")

<CMS_HEADER>

  <CMS_FUNCTION name="define" resultname="navigationRoot">

   <CMS_CDATA_PARAM name="source">

     <![CDATA[pagefolder:$CMS_IF(!#global.getContext().getVariableValue("pt_g_navigation_"+area+"_root").isEmpty)$$CMS_VALUE(#global.getContext().getVariableValue("pt_g_navigation_"+area+"_root"))$$CMS_ELSE$root$CMS_END_IF$]]>

   </CMS_CDATA_PARAM>

  </CMS_FUNCTION>

  <CMS_FUNCTION name="Navigation" resultname="ft_navigation">

    <CMS_PARAM name="expansionVisibility" value="all"/>

    <CMS_PARAM name="wholePathSelected" value="1"/>

    <CMS_VALUE_PARAM name="root" value="navigationRoot.toString()" />

    <CMS_ARRAY_PARAM name="innerBeginHTML">

    ...

</CMS_HEADER>

>>$CMS_VALUE(navigationRoot)$<<

...

$CMS_VALUE(ft_navigation)$

  • Für den Hauptknoten, der den Referenznamen "root" hat, funktioniert das (dort wird nicht in den Fallback gegangen)
  • für alle anderen nicht
content_creator.png

Ich habe mir hier auch mal nach ähnlichen Problemen gesucht, z.B. hier​, die Lösungen dort haben aber, für mich, nicht funktioniert

Was mache ich da falsch?

Ich hab das Gefühl das es mit der Art der Zuweisung hier:

<CMS_VALUE_PARAM name="root" value="navigationRoot.toString()" />

zu tun hat.

0 Kudos
1 Reply
HenningSchneidr
I'm new here

Denkfehler von mir, im jeweiligen Navigationsbaum müssen Unterordner drin sein damit das so funktioniert. #AscheAufMeinHaupt 😉

0 Kudos