Этот урок будет последним в нашем с вами курсе. В нем мы с вами рассмотрим, как создать 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! Мы с вами справились с нашим большим курсом! Поздравляю всех, кто дошел до этой части.
<head> ...{$id | url : ['scheme' => 'full']}" rel="canonical" />Разумеется по средствам phx [[~[[*id]]? &scheme=`full`]] всё работает, но на феномен почему-то, когда я его включаю или же пусто или же в viewsource этот же кусок фенома, как решить феноменально?{$_modx->resource.id | url : ["scheme"=>"full"]}— pdotools_fenom_default — Да
— pdotools_fenom_modx — Да
— pdotools_fenom_php — Да
Остальные в Нет, но в view-source: страницы $head по прежнему, почему-то выводит не адрес страницы, а fenom код. Если включить ещё и «Использовать Fenom на страницах — Да», то вообще ничего не выводит (белый экран/пусто).
Ошибка синтаксиса в html-страницы, pdoParser (pdotools_fenom_parser) ломался когда доходил до скриптов.! Внимательно смотрите, чтобы после всех фигурных скобок — "{" стоял пробел. Либо обернуть style в тег {ignore}{/ignore}