Search the FirstSpirit Knowledge Base
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
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
Hallo Christoph,
beim Erzeugen der URLs kannst du mit den Parametern "templateSet" oder "version" den Ausgabekanal bestimmen.
Also zum Beispiel so:
<loc>$CMS_VALUE(ref(#nav.ref, abs:1, version:0).url)$</loc>
Viele Grüße
Mark
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