Как в MODX добавить тег canonical 

Если вы тут, значит вы уже знаете что такое <link rel="canonical" href="" /> если же нет, то вот немного теории.

Поэтому сразу приступим к настройке <link rel="canonical" href="" /> в MODX.

Первым делом создадим «Дополнительное поле TV»

Настройки

  1. Имя*: canonical
  2. Подпись: Добавляет тэг canonical
  3. Описание: Добавляет тэг <link rel="canonical" href="" />
  4. Тип ввода: Текст
  5. Необязательно: Да
  6. Тип вывода: По умолчанию
  7. На вкладке «Доступно для шаблонов» указать свой шаблон (Поставить галочку).

В итоге мы получили дополнительное поле TV в теле ресурса. Благодаря этому мы можем указать адрес каноничного материала.

Если мы его оставим пустым, то MODX должен настраивать <link rel="canonical" href="" /> href на текущий URL страницы.

Итак продолжим настройки.

Откроем чанк в котором у нас описывается тег <HEAD></HEAD>

У меня всё разделено на дополнительные чанки, т.е. для каждого типа тегов в <HEAD> создан чанк, чанк для CSS, для Скриптов, для META и т.д.

Добавляем следующий код. (Внимание! у вас должен быть установлен плагин pdoTools)

<!-- canonical -->
<link rel="canonical" href="[ [pdoField?
	&field=`canonical`
	&prepareTVs=`canonical`
	&top=`0`
	&output=`[ [++site_url] ][ [*uri] ]`
] ]" />

В итоге

  1. если для ресурса в TV «canonical» указан URL, то берём данные для rel="canonical" href из него.
  2. если для ресурса TV «canonical» — пусто, то указываем для rel="canonical" href текущей страницы.

Удачи.


Рейтинг: 3,6/5 - 5 голосов

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

  1. Евгений 17 июня 2022, 11:18
    0
    Дружище! Подскажи пожалуйста. Всё установил, но почему-то не работает.
    Вместо адреса пишет квакозябры из прилагаемого кода:
    адрес сайта/[%20[pdoField?&field=`canonical`&prepareTVs=`canonical`&top=`0`&output=`[%20[++site_url]%20][%20[*uri]%20]`]%20]
    1. Администратор 17 июня 2022, 13:29
      0
      Добрый день
      Тег прописывается по синтаксису правильно, только кодировка ошибочна? т.е. не может правильно кириллицу перевести?
      Плагин translit стоит?
      friendly_urls и friendly_urls_strict включены?
      1. Евгений 20 июня 2022, 15:07
        0
        Адрес сайта на латинице ссылки тоже вроде все на латинице.
        Транслит стоит
        friendly_urls и friendly_urls_strict тоже вкл.
        1. Администратор 20 июня 2022, 15:23
          0
          Конструкция где прописана в чанке или документе?
          1. Евгений 20 июня 2022, 15:59
            0
            в чанке head
            1. Администратор 20 июня 2022, 16:06
              0
              Мы можем посмотреть сам сайт запросив логин пароль в админку.
              По существу нужны скрины чанков и скрины самой проблемы.
              Всю информацию можно отправить по почте
      2. Карина 21 июня 2023, 23:36
        +1
        Если у кого-то такая ошибка, значит вы пробелы не убрали, и кодировку смените в файлике, откуда копируете код в чанк