Sitemap (сайтмап) — это XML-файл с информацией для поисковых систем о страницах сайта, которые подлежат индексации. Подробнее о формате файла: http://www.sitemaps.org/ru/protocol.html
Фреймворк Вебасист автоматически генерирует основной sitemap.xml, который является
файлом индекса сайтмапа (подробнее об сайтмап-индексах:
http://www.sitemaps.org/ru/protocol.html#sitemapIndexXMLExample).
В этом файле указываются адреса (URL) sitemap-файлов конкретных приложений, например sitemap-blog.xml, sitemap-site.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<sitemap>
<loc>http://www.webasyst.com/sitemap-blog.xml</loc>
<lastmod>2012-06-07T16:49:08+04:00</lastmod>
</sitemap>
<sitemap>
<loc>http://www.webasyst.com/sitemap-site.xml</loc>
<lastmod>2012-06-07T16:49:08+04:00</lastmod>
</sitemap>
</sitemapindex>
В список этого сайтмап-индекса автоматически попадают все приложения, у которых есть фронтенд (frontend => true), которые
подключены в маршрутизации данного сайта
и которые умеют генерировать сайтмап (должны выполняться все три условия). Для последнего (для того, чтобы приложение генерировало собственный сайтмап
sitemap-APP_ID.xml), необходимо создать файл wa-apps/APP_ID/lib/config/APP_IDSitemapConfig.class.php.
Например, если ваше приложение testapp умеет показывать страницы в зависимости от домена (простейшая CMS), то вышеупомянутый файл APP_IDSitemapConfig.class.php для этого приложения может быть реализован так:
<?php
// wa-apps/testapp/lib/config/testappSitemapConfig.class.php
class testappSitemapConfig extends waSitemapConfig
{
public function execute()
{
// Получаем список страниц, для текущего домена $this->domain
$model = new testappPageModel();
$pages = $model->getPages($this->domain);
// Получаем все поселения нашего приложения для текущего домена
$routes = $this->getRoutes();
foreach ($routes as $route) {
// Формируем часть URL страницы, которая задаётся в роутинге при поселении приложения.
// Например, если приложение поселено для домена domain.ru по адресу /testapp/*, то эта функция вернёт URL http://domain.ru/testapp/
$route_url = $this->getUrlByRoute($route);
foreach ($pages as $p) {
// Добавляем URL в sitemap
$this->addUrl($route_url.$p['url'], $p['update_datetime'], self::CHANGE_MONTHLY, 0.8);
}
}
}
}
Основная функция добавления элемента в сайтмап — функция addUrl($url, $last_modified_time, $changefreq, $priority),
параметры которой:
-
$url— абсолютный URL страницы -
$last_modified_time— время последнего редактирования -
$changefreq— строка, описывающая частоту изменения страницы, например weekly, monthly -
$priority— приоритет, от 0 до 1









