KevinReif
New Creator

URL Creator CaaS

Hallo zusammen,

meine Firma entwickelt momentan eine Single Page Application (SPA) und möchte deren Inhalte mit First Spirit breitstellen. Hierfür wird der CaaS-Channel genutzt über den JSON-Files produziert und auf einem Server abgelegt werden.

Ich selbst bin neu im Firstspirit Umfeld. Daher verzeiht mir bitte, falls ich Sachen falsch formuliere.

Dies funktioniert soweit. Nun möchten wir dem JSON-File eine SEO-URL hinzufügen ("seo_url":"/path/to/pageref").

Die URL soll die Ordner Struktur im Struktur Bereich wiedergeben. Es soll jeweils der Anzeigename des Ordners, separiert mit "/", in der aktuellen Sprache in die URL.

Am Ende kommt der Anzeigename der Seitenreferenz in der aktuellen Sprache.

Hierbei gibt es zwei Hindernisse:

  1. Sonderzeichen müssen ersetzt, bzw. getilgt werden. Leerzeichen müssen durch "-" ersetzt werden.
  2. Es kann vorkommen, dass im selben Ordner zwei Seitenreferenzen mit dem gleichen Anzeigenamen liegen. Dann muss an die URL ein Counter ("_2") angehengt werden.

Gibt es eine best practice wie ich die URLs im CaaS Channel erzeugen kann? Die gängige Variante über den URL Creator funktioniert im CaaS Umfeld nicht, da ich keinen URL Creator auswählen kann.

Vielen Dank für die Hilfe und freundliche Grüße

Kevin Reif

1 Reply
tgrassl
Occasional Observer

Hallo Kevin,

bei uns gibt es derzeit die selbe Anforderung und wir sind auf eine mögliche Lösung gekommen:

<CMS_HEADER>

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

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

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

     <CMS_VALUE_PARAM name="root" value='"pagefolder:"+ss_navigation_root' />

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

     <CMS_ARRAY_PARAM name="selectedHTML">

          <CMS_ARRAY_ELEMENT index="0..10">

               <![CDATA[$CMS_TRIM(level:4)$

                    /$CMS_VALUE(#nav.ref.getFilename().replace("_", "-"))$

                    $CMS_SET(prevLabel,#nav.ref.getFilename())$

               $CMS_END_TRIM$]]>

          </CMS_ARRAY_ELEMENT>

     </CMS_ARRAY_PARAM>

     <CMS_ARRAY_PARAM name="pageRefRendering">

           <CMS_ARRAY_ELEMENT index="0..10"><![CDATA[$CMS_TRIM(level:4)$

                $CMS_IF(prevLabel.equals(#global.node.getFilename()) == false)$

                     /$CMS_VALUE(#global.node.getFilename().replace("_", "-"))$

               $CMS_END_IF$

               $CMS_SET(prevLabel,#global.node.getFilename())$

                $CMS_END_TRIM$]]></CMS_ARRAY_ELEMENT>

         </CMS_ARRAY_PARAM>

     </CMS_FUNCTION>

</CMS_HEADER>

{

     "url": "$CMS_VALUE(getNav)$",

     "pageData": $CMS_VALUE(#global.page.toHtml())$

}

Wir nutzen hier die "Navigation" CMS Function um den Pfad zu erstellen und hängen diesen dann mit dem "url" key an das json der seite.

Das Ergebnis sieht dann zum Beispiel so aus:

{

     "url": "/ratgeber/foerdermittel/kfw-programme-im-ueberblick",

     "pageData": {"fsType":"Page",...}

}

Wahrscheinlich musst die die Funktion noch für deine Anforderung etwas anpassen.

Ich hoffe ich konnte dir weiterhelfen Smiley Happy

Timon