Bitrix, добавление canonical в header страницы

Добавление canonical в head — это частный случай более общей задачи — добавления динамических переменных в header. А обобщенно это — «задача добавления буферизированного контента в шаблон Битрикс», но я люблю рассматривать все на конкретных примерах.

Все не так просто

Проблема в том, что $APPLICATION->GetProperty(‘canonical’) в header.php шаблона возвращает пустую строку, если $APPLICATION->SetProperty(‘canonical’, %КАНОНИЧЕСКАЯ_ССЫЛКА%) выполняется внутри компонента

Почему canonical возвращается пустым?

header.php шаблона выполняется перед тем как будет выполнено тело страницы, а значит раньше, чем мы его назначим, а значит GetProperty вызывается прежде, чем мы назначаем canonical через SetProperty

Решение

В Битриксе для решения подобных задач существует методы класса Application :  SetHeadString, SetHeadScript, AddBuffetContent и прочие.

  • Открываем редактор, открываем шаблон /bitrix/templates/ШАБЛОН/header.php
  • Внутри тэга <head> добавим следующие строки

    [php]
    function getCanonical(){
    global $APPLICATION;
    if ($APPLICATION->GetProperty(‘canonical’)){
    return »;
    }
    }
    $APPLICATION->addBufferContent(‘getCanonical’);
    [/php]

  • Добавляем $APPLICATION->SetProperty(‘canonical’, ‘%URL%’) в нужном месте(компонент, или где вы собирались назначать его)

3 комментария к “Bitrix, добавление canonical в header страницы”
  1. Виктория 02.12.2013
  2. superk 02.12.2013
  3. Мах 23.11.2014

Оставить комментарий

три × четыре =