Как лучше вывести SECTION_PAGE_URL в 1c Битрикс для установки в canonical?
Нужно понять: подскажите, как вывести SECTION_PAGE_URL на странице списка новостей?
По вводным: шаг.1 Так я пытался вывести на странице чтобы проверить получается ли SECTION_PAGE_URL:
<?=$arResult["SECTION_PAGE_URL"] ?>
По вводным: шаг.2 А так я собираюсь установить сам каноникал:
$APPLICATION->AddHeadString('<link rel="canonical" href="'.$arResult["SECTION_PAGE_URL"].'">',true);
Сейчас ситуация такая: но так как я стопарюсь на шаге номер 1, до второго я просто не добираюсь.
Нужно понять: люди добрые подскажите, как в этой системе получить и вывести каноникал секции новости?
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
В 1С-Битрикс
SECTION_PAGE_URLдля canonical лучше получать из данных раздела или через API инфоблоков, а не собирать строкой вручную. Canonical должен совпадать с реальным ЧПУ раздела, учитывать шаблон URL, символьные коды, вложенность и домен.Если вы находитесь внутри компонента каталога или списка, часто в
$arResultуже есть данные текущего раздела. Проверьте dump массива в разработке:$arResult['SECTION']['SECTION_PAGE_URL']или аналогичное поле.Если нужно получить URL вручную по ID раздела:
Метод
GetNext()важен тем, что он подставляет макросы URL по настройкам инфоблока. Если взять сырое поле без обработки, можно получить шаблон вида#SECTION_CODE_PATH#, а не готовую ссылку.Для установки canonical в шаблоне лучше использовать
SetPageProperty, если ваша тема/SEO-логика его выводит. Если canonical выводит отдельный SEO-модуль, нужно смотреть его API или событие, чтобы не получить два canonical.Не забывайте про пагинацию, фильтры и параметры. Для страниц фильтра canonical не всегда должен вести на раздел. Если это SEO-страницы фильтра, у них может быть свой canonical.
Итог: берите
SECTION_PAGE_URLчерез обработанные данные компонента илиCIBlockSection::GetList()->GetNext(), добавляйте домен и выводите через единый механизм canonical. Не собирайте URL вручную из кодов разделов, если Битрикс уже умеет это делать.