Есть на нашем сайте, который на MODx Evo, индекс карты сайта для Гугла — http://seomost.ru/sitemap.xml
Я не великий специалист, так что пришлось потратить время.
Поэтапно:
Создаём файл в /assets/snippets/ditto/formats/, я скопировал xml.format.inc.php и назвал его для удобства xml-sitemap-index.format.inc.php, потом его изменил:
<?php /* Ditto's output capabilities to include XML */ $xml_placeholders['[+xml_copyright+]'] = isset($copyright) ? $copyright: $_lang['default_copyright']; $xml_placeholders['[+xml_lang+]'] = (isset($abbrLanguage))? $abbrLanguage : $_lang['abbr_lang']; $xml_placeholders['[+xml_link+]'] = $modx->config['site_url']."[~".$modx->documentObject['id']."~]"; $xml_placeholders['[+xml_ttl+]'] = isset($ttl) ? intval($ttl):120; $xml_placeholders['[+xml_charset+]'] = isset($charset) ? $charset : $modx->config['modx_charset']; $rss_placeholders['[+xml_xsl+]'] = isset($xsl) ? '<?xml-stylesheet type="text/xsl" href="'.$modx->config['site_url'].$xsl.'" ?>' : ''; $placeholders['*'] = "xml_parameters"; if(!function_exists("xml_parameters")) { function xml_parameters($placeholders) { $xmlArr = array(); foreach ($placeholders as $name=>$value) { $xmlArr["xml_".$name] = htmlentities($value); } $placeholders = array_merge($xmlArr,$placeholders); return $placeholders; } } // set default templates $xml_header = <<<TPL <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="[(base_url)]assets/templates/seo/xml/sitemap-index-stylesheet.xsl"?> <sitemapindex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> TPL; $xml_tpl = <<<TPL <sitemap> <loc>[(base_url)][+alias+].xml</loc> </sitemap> TPL; $xml_footer = <<<TPL </sitemapindex> TPL; $header = isset($header) ? $header : template::replace($xml_placeholders,$xml_header); $tpl = isset($tpl) ? $tpl : "@CODE:".$xml_tpl; $footer = isset($footer) ? $footer : $xml_footer; $noResults = " "; ?>
Файл стиля (sitemap-index-stylesheet.xsl) для индекса (http://seomost.ru/sitemap.xml), который подключается в xml-sitemap-index.format.inc.php, выглядит так:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>XML Sitemap Index</title> <style type="text/css"> h1 {font-size:18px;color:#FF5809 !important;} body {margin-left: 25px;font-size: 14px;font-family: 'Lucida Grande', Helvetica, Arial, sans-serif;} span {color:#FF5809 !important;} p {border-bottom:1px #ccc solid;padding: 5px;} #content {margin-left: 15px;} table { border: 1px #ccc solid; font-size: 14px; margin-top: 20px; margin-left: -5px; } table tr:nth-child(odd) td { background: #f2f7ff; } table td { padding: 5px; margin: 0; vertical-align: middle; background: #fff; } table th { text-align: left; border-bottom: 1px #ccc solid;padding: 5px; font-weight: bold; background: #fff; } table tr:hover td { background: #ffffe5; } table a { padding: 16px; font-size:14px; font-weight: bold; color:#00CE00 !important;} </style> </head> <body> <h1>XML Sitemap Index</h1> <p> Эта sitemap index показывает все sitemap для сайта <a href="http://seomost.ru/"> Seomost.ru</a>, <br/> используется <span>MODx CMF</span>, сниппет <span>Ditto</span>. </p> <div id="content"> <table> <tr style="border-bottom:1px black solid;"> <th>URL</th> </tr> <xsl:for-each select="sitemap:sitemapindex/sitemap:sitemap"> <tr> <td> <xsl:variable name="itemURL"> <xsl:value-of select="sitemap:loc"/> </xsl:variable> <a href="{$itemURL}"> <xsl:value-of select="sitemap:loc"/> </a> </td> </tr> </xsl:for-each> </table> </div> </body> </html> </xsl:template> </xsl:stylesheet>
Вызов Ditto на самой странице индекса (http://seomost.ru/sitemap.xml) выглядит так:
[[Ditto?&format=`xml-sitemap-index`&documents=`96,49`]]
где xml-sitemap-index это часть названия файла, который описывался выше (xml-sitemap-index.format.inc.php), а 96,49 это id ваших sitemap(ов).
Как сделать красиво url и расширения
Так как, наши sitemap(ы) вообще то находятся вот тут, и без расширения:
http://seomost.ru/servis/sitemap/
http://seomost.ru/servis/sitemap1/
http://seomost.ru/servis/sitemap2/
если у вас так же, то в корневой файл .htaccess, после строки RewriteEngine On нужно добавить:
RewriteRule ^sitemap.xml$ /servis/sitemap/ [L] RewriteRule ^sitemap1.xml$ /servis/sitemap1/ [L] RewriteRule ^sitemap2.xml$ /servis/sitemap2/ [L]
по аналогии можно любую страницу отобразить так как вам хочется.
Это для тех кто не знают
В свойствах страницы индекса, в той где вызов Ditto (в админке), шаблон нужно выбрать blank, а на вкладке Настройка страницы в Тип содержимого — text/xml
Об участниках :)
На нашем сайте в файле Sitemap Index используется Ditto, а в двух файлах sitemap используетсяGoogleSiteMap_XMLSitemap-1.0.11 и ListSiteMap.
Про создание простых sitemap для MODx Evo почитайте, еще где нибудь, информации полно.
Можно добавить, что sitemap index можно сделать как контейнер, а сами sitemap его дочерними документами. Вызов Ditto можно менять, а можно не менять, как кому удобно.
В 2018 году, снипет GoogleSiteMap_XML был заменен на Sitemap-1.0.11 из-за изменения кода самого Modx