FENOM'енальный курс. Часть 18. Robots, Sitemap, Canonical.

Шаблон MAGAZINE вы можете скачать по ссылке.

Этот урок будет последним в нашем с вами курсе. В нем мы с вами рассмотрим, как создать 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! Мы с вами справились с нашим большим курсом! Поздравляю всех, кто дошел до этой части.

Оцените статью:

Проголосовало: 22

Комментарии ()

  1. Василий 27 марта 2019, 14:58 # 0
    Артём, у меня почему-то не получилось вывести в
    <head> ...{$id | url : ['scheme' => 'full']}" rel="canonical" />
    Разумеется по средствам phx [[~[[*id]]? &scheme=`full`]] всё работает, но на феномен почему-то, когда я его включаю или же пусто или же в viewsource этот же кусок фенома, как решить феноменально?
    1. Петропавловский Артем 27 марта 2019, 15:13 # 0
      Попробуйте указать так:
      {$_modx->resource.id | url : ["scheme"=>"full"]}
      1. Василий 01 апреля 2019, 17:48 # 0
        Попробовал, но, не получилось. А в системных настройках включено только: pdotools_fenom_default — Да.
        1. Василий 08 апреля 2019, 10:01(Комментарий был изменён) # 0
          Артём, получилось включить Fenom настройки:
          — pdotools_fenom_default — Да
          — pdotools_fenom_modx — Да
          — pdotools_fenom_php — Да
          Остальные в Нет, но в view-source: страницы $head по прежнему, почему-то выводит не адрес страницы, а fenom код. Если включить ещё и «Использовать Fenom на страницах — Да», то вообще ничего не выводит (белый экран/пусто).
          1. Василий 08 апреля 2019, 14:15(Комментарий был изменён) # 0
            Решено.
            — pdotools_fenom_default — Да
            — pdotools_fenom_modx — Да
            — pdotools_fenom_php — Да
            — pdotools_fenom_parser — Да

            Ошибка синтаксиса в html-страницы, pdoParser (pdotools_fenom_parser) ломался когда доходил до скриптов.! Внимательно смотрите, чтобы после всех фигурных скобок — "{" стоял пробел. Либо обернуть style в тег {ignore}{/ignore}

        Написать комментарий

        Наши клиенты

        Многие компании уже доверяют нам. Будьте в их числе!

        Хотите реализовать проект?

        Контакты

        Напишите нам - мы расскажем вам много интересного!


        Пермь, ул. Крупской 34, офис 510