Как лучше вывести SECTION_PAGE_URL в 1c Битрикс для установки в canonical?

Ссылка скопирована
1 ответ

Нужно понять: подскажите, как вывести 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
Mobile-редакция Ответ

В 1С-Битрикс SECTION_PAGE_URL для canonical лучше получать из данных раздела или через API инфоблоков, а не собирать строкой вручную. Canonical должен совпадать с реальным ЧПУ раздела, учитывать шаблон URL, символьные коды, вложенность и домен.

Если вы находитесь внутри компонента каталога или списка, часто в $arResult уже есть данные текущего раздела. Проверьте dump массива в разработке: $arResult['SECTION']['SECTION_PAGE_URL'] или аналогичное поле.

Если нужно получить URL вручную по ID раздела:

$section = CIBlockSection::GetList(
    array(),
    array('ID' =&gt; $sectionId, 'IBLOCK_ID' =&gt; $iblockId),
    false,
    array('ID', 'IBLOCK_ID', 'SECTION_PAGE_URL')
)-&gt;GetNext();
 
if ($section &amp;&amp; !empty($section['SECTION_PAGE_URL'])) {
    $APPLICATION-&gt;SetPageProperty('canonical', 'https://example.ru' . $section['SECTION_PAGE_URL']);
}

$section = CIBlockSection::GetList( array(), array('ID' =&gt; $sectionId, 'IBLOCK_ID' =&gt; $iblockId), false, array('ID', 'IBLOCK_ID', 'SECTION_PAGE_URL') )-&gt;GetNext(); if ($section &amp;&amp; !empty($section['SECTION_PAGE_URL'])) { $APPLICATION-&gt;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 вручную из кодов разделов, если Битрикс уже умеет это делать.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно