Questions & Answers

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

Type a product name