Помощник Sitemap используется для создания карты сайта в формате XML, потому что это стандартный формат для создания карт.
По-умолчания помощник Sitemap использует валидаторы для проверки каждого элемента, который рендериться (отображается). Это можно отключить используя метод $helper->setUseSitemapValidators(false).
Важно: Если Вы отключите валидаторы в помощнике Sitemap, то пользовательские свойства не будут проверяться вообще. Подробнее в таблице ниже.
Помощник Sitemap поддерживает Sitemap XSD Schema валидации сгенерированного сайта. По-умолчанию отключено, потому что будет отправлен запрос к файлу Schema. Для включения воспользуйтесь методом $helper->setUseSchemaValidation(true).
1) loc– абсолютный URL к странице. Генерируется помощником.
2) lastmod– дата последнего изменения файла в формате W3C. Может быть пропущена при необходимости. Можно использовать просто YYYY-MM-DD. Если дата не проходит валидацию она игнорируется.
3) changefreq - как часто изменяется страница. Предоставляет общую информацию поисковикам и может не сильно точно соответствовать частоте сканирования. Валидные значения: always/hourly/daily/weekly/monthly/yearly/never. Если значение не проходит валидацию оно игнорируется.
4) priority - приоритет этого URL относительно других URL-адресов на Вашем сайте. Валидные значения: 0.0-1.0 . Если значение не проходит валидацию оно игнорируется.
1) {get|set}FormatOutput() gets/sets (получить/установить) флаг, указывающий на то, должен ли быть отформатирован XML вывод. Соответствует значению formatOutput класса DOMDocument. По умолчанию FALSE.
2) {get|set}UseXmlDeclaration() gets/sets (получить/установить) флаг, указывающий, надо ли включить декларацию XML. По умолчанию TRUE.
3) {get|set}UseSitemapValidators() gets/sets (получить/установить) флаг, определяющий, надо ли использовать валидацию при создании DOM. По умолчанию TRUE.
4) {get|set}UseSchemaValidation() gets/sets (получить/установить) флаг, определяющий, надо ли использовать валидацию XML Schema при создании DOM sitemap. По умолчанию FALSE.
5) {get|set}ServerUrl() gets/sets (получить/установить) URL-адрес сервера, который будет добавлен к неабсолютному URL - адресу в методе url(). Если не указать, то будет определена помощником.
6) url() – используется для создания абсолютных URL для страниц.
7) getDomSitemap() – создает DOMDocument из контейнера.
// In a view script or layout: // format output $this->navigation() ->sitemap() ->setFormatOutput(true); // default is false // other possible methods: // ->setUseXmlDeclaration(false); // default is true // ->setServerUrl('http://my.otherhost.com'); // default is to detect automatically // print sitemap echo $this->navigation()->sitemap();
Если установлен ACL - то создано будет с применением соответствующих фильтров:
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://www.example.com/</loc> </url> <url> <loc>http://www.example.com/products</loc> </url> <url> <loc>http://www.example.com/products/server</loc> </url> <url> <loc>http://www.example.com/products/server/faq</loc> </url> <url> <loc>http://www.example.com/products/server/editions</loc> </url> <url> <loc>http://www.example.com/products/server/requirements</loc> </url> <url> <loc>http://www.example.com/products/studio</loc> </url> <url> <loc>http://www.example.com/products/studio/customers</loc> </url> <url> <loc>http://www.example.com/products/studio/support</loc> </url> <url> <loc>http://www.example.com/company/about</loc> </url> <url> <loc>http://www.example.com/company/about/investors</loc> </url> <url> <loc>http://www.example.com/company/news</loc> </url> <url> <loc>http://www.example.com/company/news/press</loc> </url> <url> <loc>http://www.example.com/archive</loc> </url> <url> <loc>http://www.example.com/community</loc> </url> <url> <loc>http://www.example.com/community/account</loc> </url> <url> <loc>http://forums.example.com/</loc> </url> </urlset>
Построение карты сайта с использованием ролей ACL. Должно отфильтровать /community/account:
echo $this->navigation() ->sitemap() ->setFormatOutput(true) ->setRole();
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://www.example.com/</loc> </url> <url> <loc>http://www.example.com/products</loc> </url> <url> <loc>http://www.example.com/products/server</loc> </url> <url> <loc>http://www.example.com/products/server/faq</loc> </url> <url> <loc>http://www.example.com/products/server/editions</loc> </url> <url> <loc>http://www.example.com/products/server/requirements</loc> </url> <url> <loc>http://www.example.com/products/studio</loc> </url> <url> <loc>http://www.example.com/products/studio/customers</loc> </url> <url> <loc>http://www.example.com/products/studio/support</loc> </url> <url> <loc>http://www.example.com/company/about</loc> </url> <url> <loc>http://www.example.com/company/about/investors</loc> </url> <url> <loc>http://www.example.com/company/news</loc> </url> <url> <loc>http://www.example.com/company/news/press</loc> </url> <url> <loc>http://www.example.com/archive</loc> </url> <url> <loc>http://www.example.com/community</loc> </url> <url> <loc>http://forums.example.com/</loc> </url> </urlset>
Создание карты сайта с максимальной глубиной 1
echo $this->navigation() ->sitemap() ->setFormatOutput(true) ->setMaxDepth(1);
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://www.example.com/</loc> </url> <url> <loc>http://www.example.com/products</loc> </url> <url> <loc>http://www.example.com/products/server</loc> </url> <url> <loc>http://www.example.com/products/studio</loc> </url> <url> <loc>http://www.example.com/company/about</loc> </url> <url> <loc>http://www.example.com/company/about/investors</loc> </url> <url> <loc>http://www.example.com/company/news</loc> </url> <url> <loc>http://www.example.com/community</loc> </url> <url> <loc>http://www.example.com/community/account</loc> </url> <url> <loc>http://forums.example.com/</loc> </url> </urlset>
Важно: Кодировка UTF-8 используется по-умолчанию! Другую кодировку можно установить с помощью метода setEncoding(). Но помните, что Zend\View\Interface не определяет методов для кодирования, поэтому метод getEncoding() может быть не доступен, а он используется по-умолчанию помощниками для определения кодировки. Тогда Вам придется самому написать метод getEncoding() для нужной кодировки.