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