- Автор темы
- #1
Создаем сниппет Sitemap и вставляем в него код:
Выбор «Показывать/не показывать» в карте сайта:
— создаем TV "sitemap_exclude"
— тип Dropdown List Menu
— возможные значения Показывать==0||Не показывать==1
— по умолчанию
— отмечаем все шаблоны, какие нужно
Далее создаем в корне сайта документ «Карта сайта»:
— тип содержимого html/xml
— убрать галочку у html-редкатора (Очень важно!!!)
— псеводним sitemap.xml
— шаблон blank
— в тело документа вставляем:
[!SiteMap? &format=`xml` &excludeTV=`sitemap_exclude` &excludeTemplates=`` &excludeChilds=``!]
Параметры:
excludeTemplates — не отправлять в карту сайта документы с таким ID шаблона
excludeChilds — не показывть в карте дочерние документы этих папок
Индекс в ЧПУ должен быть отключен, иначе получится sitemap.xml.tml например.
Работает в 1.0.2 и выше.
ЗЫ: Статья взята с
PHP:
<?php
//откуда начать
$startid = (isset($startid)) ? $startid : 0;
//в каком формате выводить результат (url или xml)
global $formatSP;
$formatSP = (isset($format)) ? $format : 'xml';
//название TV-параметра, по которому отмечаются запрещенные для вывода элементы
global $excludeTVSP;
$excludeTVSP = (isset($excludeTV)) ? $excludeTV : 'sitemap_exclude';
//номера шаблонов которые запрещается выводить (0 - blank)
global $excludeTemplatesSP;
$excludeTemplatesSP = (isset($excludeTemplates)) ? $excludeTemplates : '';
$excludeTemplatesSP = explode(",", $excludeTemplatesSP);
//номера ID-шников которые выводить надо, но их дочерние элементы - нет
global $excludeChildsSP;
$excludeChildsSP = (isset($excludeChilds)) ? $excludeChilds : '';
$excludeChildsSP = explode(",", $excludeChildsSP);
//номера ID-шников которые не надо выводить
global $excludeIdSP;
$excludeIdSP = (isset($excludeDocs)) ? $excludeDocs : '';
$excludeIdSP = explode(",", $excludeIdSP);
$out = getDocs($startid);
if ($formatSP=='url')
{
$output = "<ul class=\"sitemap\">$out</ul>";
}
else
{
$output = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
$output .='<urlset '."\n";
$output .='xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" ';
$output .='xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ';
$output .='xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 ';
$output .='http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" ';
$output .='>';
$output .= $out;
$output .= '</urlset>';
}
return $output;
# gets list of published documents with properties
function getDocs($startid)
{
global $modx,$formatSP,$excludeTVSP,$excludeTemplatesSP,$excludeChildsSP,$excludeIdSP;
// get children documents
$docs = $modx->getActiveChildren($startid,'menuindex','asc','id,editedon,template,published,deleted,searchable,pagetitle,type');
// add sub-children to the list
foreach ($docs as $key => $doc)
{
$tv = $modx->getTemplateVar($excludeTVSP,'*',$doc['id']);
if (($tv['value']!=1)
&& (!in_array($doc['template'],$excludeTemplatesSP))
&& ($doc['type']=='document')
&& ($doc['id']!=$modx->documentIdentifier)
&& ($doc['published'])
&& (!$doc['deleted'])
&& (!in_array($doc['id'],$excludeIdSP))
)// tv default value is overriden (including empty)
{
if (in_array($doc['id'],$excludeChildsSP))
$child='';
else
$child = getDocs($doc['id']);
if ($doc['id'] == $modx->config['site_start'])
$url = '[(site_url)]';
else
$url = '[(site_url)][~'.$doc['id'].'~]';
if($formatSP=='url')
{
$date = date("d-m-Y", $doc['editedon']);
$output .= "<li>";
$output .= "<a href=\"$url\">".$doc['pagetitle']."</a>";
if ($child) $output.="<ul>$child</ul>";
$output .= "</li>\n";
}else
{
$date = date("Y-m-d", $doc['editedon']);
$output .= "\t<url>\n";
$output .= "\t\t<loc>$url</loc>\n";
$output .= "\t\t<lastmod>$date</lastmod>\n";
$output .= "\t</url>\n";
$output .= $child;
}
}
}
return $output;
}
?>
Пусть Вас не смущает то, что в коде указаны старые версии. Просто не стал править=) В самом коде внесены пара строчек изменений по сравнению с эталонным от старых МОДх.
Выбор «Показывать/не показывать» в карте сайта:
— создаем TV "sitemap_exclude"
— тип Dropdown List Menu
— возможные значения Показывать==0||Не показывать==1
— по умолчанию
— отмечаем все шаблоны, какие нужно
Далее создаем в корне сайта документ «Карта сайта»:
— тип содержимого html/xml
— убрать галочку у html-редкатора (Очень важно!!!)
— псеводним sitemap.xml
— шаблон blank
— в тело документа вставляем:
[!SiteMap? &format=`xml` &excludeTV=`sitemap_exclude` &excludeTemplates=`` &excludeChilds=``!]
Параметры:
excludeTemplates — не отправлять в карту сайта документы с таким ID шаблона
excludeChilds — не показывть в карте дочерние документы этих папок
Индекс в ЧПУ должен быть отключен, иначе получится sitemap.xml.tml например.
Работает в 1.0.2 и выше.
ЗЫ: Статья взята с
Для просмотра скрытого содержимого вы должны войти или зарегистрироваться.