Sitemap

Содержание...

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), параметры которой: