Файл 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 и править ничего не надо ))))