Файл Sitemap — это файл с данными о всех страницах сайта. С помощью файла Sitemap вы сообщаете поисковикам (google, yandex), какие страницы вашего сайта нужно добавить в индекс, как часто обновляется информация на страницах, а также каких страниц наиболее важны для индексации.
Частота обновления информации на страницах задается тегом: changefreq
Важность страниц задается тегом: priority
Ниже приведен PHP скрипт генерации xml sitemap для google и яндекса:
—————————————————
<?php
//адрес вашего сайта
$ServerUrl = 'http://site.ru';
// создаем новый xml документ
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->formatOutput = true;
// массив страницы для sitemap
$pages = array(
array(
'url' => '/',
'changefreq' => 'daily',
'priority' => '1.00',
),
array(
'url' => '/sitemap',
'changefreq' => 'daily',
'priority' => '0.90',
),
);
//Получаем все статьи из БД
// и добавляем их в массив
$arts = getAllAtrs();
foreach($arts as $art) {
$pages[] = array(
'url' => '/category/'.$art['id'],
'changefreq' => 'daily',
'priority' => '0.80',
);
}
//вывод на экран количества страниц в sitemap
var_dump(sizeof($pages));
$SITEMAP_NS = 'http://www.sitemaps.org/schemas/sitemap/0.9';
$SITEMAP_NS_XSD = 'http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd';
// ...and urlset (root) element
$urlSet = $dom->createElementNS($SITEMAP_NS, 'urlset');
$dom->appendChild($urlSet);
$urlSet->setAttributeNS('http://www.w3.org/2000/xmlns/' ,
'xmlns:xsi',
'http://www.w3.org/2001/XMLSchema-instance');
$urlSet->setAttributeNS('http://www.w3.org/2001/XMLSchema-instance',
'schemaLocation',
$SITEMAP_NS . ' ' . $SITEMAP_NS_XSD);
foreach($pages as $page) {
$url = $ServerUrl . $page['url'];
// create url node for this page
$urlNode = $dom->createElementNS($SITEMAP_NS, 'url');
$urlSet->appendChild($urlNode);
// put url in 'loc' element
$urlNode->appendChild($dom->createElementNS(
$SITEMAP_NS,
'loc', $url));
$urlNode->appendChild(
$dom->createElementNS(
$SITEMAP_NS,
'changefreq',
$page['changefreq'])
);
$urlNode->appendChild(
$dom->createElementNS(
$SITEMAP_NS,
'priority',
$page['priority'])
);
}
$xml = $dom->saveXML();
//сохраняем файл sitemap.xml на диск
file_put_contents('/sitemap.xml' , $xml);
?>
—————————————————
Функцию getAllAtrs() вам нужно заменить на свою. В моем примере данная функция получаем все материалы из БД.
не работаит! Fatal error: Call to undefined function getallatrs() in Z:\home\test1.ru\www\index.php on line 23
Alex, в коде есть строчка $arts = getAllAtrs();
вам нужно функцию getAllAtrs() заменить на вашу функцию (или запрос) получения всех статей из базы данных.
извени!я новичок в этом деле!!!!на какую функцию заменить?у меня бд в mysql денвера!бд называеться primer что написать то надо
Владимир, все зависит от используемой CMS, так сразу не скажешь.
Количество записей на экран выводит правильно, а xml файл не создает 🙁
Артем, проверьте доступен ли к записи файл /sitemap.xml . Или смените путь к файлу file_put_contents(‘/sitemap.xml’ , $xml);
Огромное спасибо автору!
А если cms на фойлах как kandidat то как быть
Stas, в любом случае вам нужно использовать свою функцию getAllAtrs(), которая и будет получать данные из файлов, из БД, или из любого другого места.
перелопатил +100500 статей. Эта единственная которая мне помогла, спасибо. Это решение без напряга приципил к redbeanphp и править ничего не надо ))))