chgla
Returning Observer

In CMS_FUNCTION auf anderen Ausgabekanal zugreifen

Jump to solution

Hallo zusammen,

ich lasse mir in einem XML-Ausgabekanal über die Navigationsfunktion im CMS_HEADER eine XML-Sitemap generieren. Dies funktioniert einwandfrei, jedoch ist mir aufgefallen, dass hier die Seiten des XML-Ausgabekanals angegeben werden, statt die des HTML-Ausgabekanals.

Ich erhalte also folgendes:

<?xml version="1.0" encoding="UTF-8"?>

<urlset xmlns="http://www.google.com/schemas/sitemap/0.9">

     <url>

          <loc>/startseite/homepage-2.xml</loc>

          <lastmod>2019-03-12T14:04:38+01:00</lastmod>

          <changefreq>monthly</changefreq>

          <priority>0.5</priority>

     </url>

     …

Gewünscht ist jedoch die Ausgabe aller HTML-Seiten, statt der XML-Seiten.

Ist es irgendwie möglich, in der Funktion zur Erstellung der Navigation/Sitemap den Ausgabekanal zu wechseln?

Mein bisheriger Code im XML-Ausgabekanal:

<CMS_HEADER>

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

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

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

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

        <CMS_ARRAY_PARAM name="pageRefRendering">

            <CMS_ARRAY_ELEMENT index="0..10"><![CDATA[

                $CMS_IF(!#nav.ref.getPageLangSpec(#global.language).useExternalUrl())$

                    $CMS_IF(#nav.ref.getMultiPageParams(#global.language, #global.templateSet).getPageCount() > 1 && !#nav.ref.getMultiPageParams(#global.language,                     #global.templateSet).getData().isEmpty)$

                        $CMS_FOR(multiPage, #nav.ref.getMultiPageParams(#global.language, #global.templateSet).getData())$

     <url>

          <loc>$CMS_VALUE(ref(#nav.ref, abs:1, contentId:multiPage.getId()).url.toString().split("/").map(x->x.urlEncode).toString("/"))$</loc>

          <lastmod>$CMS_VALUE(multiPage.getLastChange().format("yyyy-MM-dd'T'HH:mm:ssZ").substring(0, 22)+":00")$</lastmod>

          <changefreq>$CMS_VALUE(#nav.ref.page.meta("md_sitemap_changefreq"),default:"monthly")$</changefreq>

          <priority>$CMS_VALUE(#nav.ref.page.meta("md_sitemap_priority"),default:"0.5")$</priority>

     </url>

                        $CMS_END_FOR$

                    $CMS_ELSE$

     <url>

          <loc>$CMS_VALUE(ref(#nav.ref, abs:1).url.toString().split("/").map(x->x.urlEncode).toString("/"))$</loc>

          <lastmod>$CMS_VALUE(#nav.ref.page.changeDate().format("yyyy-MM-dd'T'HH:mm:ssZ").substring(0, 22)+":00")$</lastmod>

          <changefreq>$CMS_VALUE(#nav.ref.page.meta("md_sitemap_changefreq"),default:"monthly")$</changefreq>

          <priority>$CMS_VALUE(#nav.ref.page.meta("md_sitemap_priority"),default:"0.5")$</priority>

     </url>

                    $CMS_END_IF$

                $CMS_END_IF$

            ]]></CMS_ARRAY_ELEMENT>

        </CMS_ARRAY_PARAM>

    </CMS_FUNCTION>

</CMS_HEADER>$--

--$$CMS_TRIM(level:2)$$--

--$<?xml version="1.0" encoding="UTF-8"?>

<urlset xmlns="http://www.google.com/schemas/sitemap/0.9">

$CMS_VALUE(sitemap)$

</urlset>

$CMS_END_TRIM$

Mit freundlichen Grüßen

Christoph Glatthor

Labels (2)
0 Kudos
1 Solution

Accepted Solutions
chgla
Returning Observer

Re: In CMS_FUNCTION auf anderen Ausgabekanal zugreifen

Jump to solution

Hallo Herr Weigelt,

super, das hat funktioniert. Ich habe hier das templateSet verwendet:

<loc>$CMS_VALUE(ref(#nav.ref, abs:1, templateSet:"html").url.toString().split("/").map(x->x.urlEncode).toString("/"))$</loc>

Mit freundlichen Grüßen

Christoph Glatthor

View solution in original post

0 Kudos
2 Replies
mark_weigelt
Elite Observer

Re: In CMS_FUNCTION auf anderen Ausgabekanal zugreifen

Jump to solution

Hallo Christoph,

beim Erzeugen der URLs kannst du mit den Parametern "templateSet" oder "version" den Ausgabekanal bestimmen.

Siehe https://docs.e-spirit.com/odfs52/vorlagenentwick/vorlagensyntax/anweisungen/cms_ref/index.html#Text_...

Also zum Beispiel so:

<loc>$CMS_VALUE(ref(#nav.ref, abs:1, version:0).url)$</loc>

Viele Grüße

Mark

0 Kudos
chgla
Returning Observer

Re: In CMS_FUNCTION auf anderen Ausgabekanal zugreifen

Jump to solution

Hallo Herr Weigelt,

super, das hat funktioniert. Ich habe hier das templateSet verwendet:

<loc>$CMS_VALUE(ref(#nav.ref, abs:1, templateSet:"html").url.toString().split("/").map(x->x.urlEncode).toString("/"))$</loc>

Mit freundlichen Grüßen

Christoph Glatthor

0 Kudos