Этот урок будет последним в нашем с вами курсе. В нем мы с вами рассмотрим, как создать robots.txt, sitemap.xml и как настроить канонические ссылки. Погнали!
Начнем мы с вами с простого – robots.txt. Для этого нам необходимо создать ресурс в корне сайта:
- Заголовок – robots
- Шаблон – пустой шаблон
- Срыть из меню – Да
- Опубликован – Да
- Тип содержимого – text
- Доступен для поиска – нет
- Использовать HTML-редактор – нет
А в содержимое ресурса пишем:
User-agent: * Allow: / Host: {$_modx->config.site_url} Sitemap: {$_modx->config.site_url}sitemap.xml
Теперь вы сможете управлять файлом robots с помощью панели администратора. Аналогично создаем ресурс sitemap:
- Заголовок – sitemap
- Шаблон – пустой шаблон
- Срыть из меню – Да
- Опубликован – Да
- Тип содержимого – XML
- Доступен для поиска – нет
- Использовать HTML-редактор – нет
Но sitemap у нас будет хитрый и состоять из нескольких кусков. Поэтому в содержимое ресурса пишем вызов pdoResources:
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> {$_modx->runSnippet("pdoResources",[ "parents" => $_modx->resource.id, "limit" => 0, "tpl" => "@FILE chunks/sitemap.tpl" ])} </sitemapindex>
Как вы уже догадались, данный файл у нас будет иметь дочерние ресурсы. Чанк sitemap.tpl:
<sitemap> <loc>{$id | url : ['scheme' => 'full']}</loc> </sitemap>
И создаем дочение подресурсы, аналогичные родителю. Содержимое ресрурса sitemap1:
{$_modx->runSnippet("pdositemap",[ "showHidden" => 1, "sortby" => "uri" ])}
Содержимое ресурса sitemap2:
{$_modx->runSnippet("sfSitemap",[ "fast" => 1, "mincount" => 1 ])}
В первом ресурсе мы выводим все страницы сайта в сайимап, а во втором виртуальные страницы SEOFilter. Я бы еще поправил последнюю строку в robots.txt:
Sitemap: {71 | url : ["scheme" => "full"]}
Теперь нам нужно настроить канонические ссылки, для того, чтобы склеить все дубли страниц в поисковой системе. Реализуется это с помощью простой конструкции, которую нужно вставить в чанк meta.tpl:
{if $_modx->getPlaceholder('sf.url')} <link rel="canonical" href='{$_modx->resource.id | url : ["scheme"=>"full"]}{$_modx->getPlaceholder("sf.url")}'> {else} <link rel="canonical" href='{$_modx->resource.id | url : ["scheme"=>"full"]}'> {/if}
Good work, everyone! Мы с вами справились с нашим большим курсом! Поздравляю всех, кто дошел до этой части.
— pdotools_fenom_default — Да
— pdotools_fenom_modx — Да
— pdotools_fenom_php — Да
Остальные в Нет, но в view-source: страницы $head по прежнему, почему-то выводит не адрес страницы, а fenom код. Если включить ещё и «Использовать Fenom на страницах — Да», то вообще ничего не выводит (белый экран/пусто).
Ошибка синтаксиса в html-страницы, pdoParser (pdotools_fenom_parser) ломался когда доходил до скриптов.! Внимательно смотрите, чтобы после всех фигурных скобок — "{" стоял пробел. Либо обернуть style в тег {ignore}{/ignore}