AddHeadString плохое решение. А если у вас уже другой криво написанный модуль установил canonical через такую же функцию. Правильно делать так:
В админке создаем свойство canonical. В нужных местах его устанавливаем через $APPLICATION->SetPageProperty('canonical', 'link'); И в том смысл этой отложенной функции, что установится только последняя по коду ссылка, а установок может быть сколько угодно в любых компонентах и не будет конфликта.
в init.php добавляем отложенные функции для вывода
function ShowCanonical() {
global $APPLICATION;
$APPLICATION->AddBufferContent('GetCanonical');
}
function GetCanonical(){
global $APPLICATION;
$val = $APPLICATION->GetProperty('canonical');
if ($val)
return '<link rel="canonical" href="' . $val . '">';
}
Выводим через ShowCanonical();