Как лучше вывести 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
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
VPN
Как правильно настроить vless для Android TV?
1 ответ
Pyrogram
Как правильно зарегистрировать юзер бота в Telegram?
1 ответ
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
1 ответ
Telegram
Как добиться, чтобы Telegram прислал мне именно смс код, а не через звонок его диктовал?
1 ответ

В 1С-Битрикс
SECTION_PAGE_URLдля canonical лучше получать из данных раздела или через API инфоблоков, а не собирать строкой вручную. Canonical должен совпадать с реальным ЧПУ раздела, учитывать шаблон URL, символьные коды, вложенность и домен.Если вы находитесь внутри компонента каталога или списка, часто в
$arResultуже есть данные текущего раздела. Проверьте dump массива в разработке:$arResult['SECTION']['SECTION_PAGE_URL']или аналогичное поле.Если нужно получить URL вручную по ID раздела:
$section = CIBlockSection::GetList( array(), array('ID' => $sectionId, 'IBLOCK_ID' => $iblockId), false, array('ID', 'IBLOCK_ID', 'SECTION_PAGE_URL') )->GetNext(); if ($section && !empty($section['SECTION_PAGE_URL'])) { $APPLICATION->SetPageProperty('canonical', 'https://example.ru' . $section['SECTION_PAGE_URL']); }
Метод
GetNext()важен тем, что он подставляет макросы URL по настройкам инфоблока. Если взять сырое поле без обработки, можно получить шаблон вида#SECTION_CODE_PATH#, а не готовую ссылку.Для установки canonical в шаблоне лучше использовать
SetPageProperty, если ваша тема/SEO-логика его выводит. Если canonical выводит отдельный SEO-модуль, нужно смотреть его API или событие, чтобы не получить два canonical.Не забывайте про пагинацию, фильтры и параметры. Для страниц фильтра canonical не всегда должен вести на раздел. Если это SEO-страницы фильтра, у них может быть свой canonical.
Итог: берите
SECTION_PAGE_URLчерез обработанные данные компонента илиCIBlockSection::GetList()->GetNext(), добавляйте домен и выводите через единый механизм canonical. Не собирайте URL вручную из кодов разделов, если Битрикс уже умеет это делать.