• Telegram: mibazarow
  • Whatsapp: MihailBazarow
  • E-mail: mihail@bazarow.ru

Уникальная СЕО информация для каждого торгового предложения в каталоге 1С-Битрикс

Внимание! Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.
Уникальная СЕО информация для каждого торгового предложения в каталоге 1С-Битрикс

Задача: реализовать уникальную информацию для каждого SKU в каталоге. У каждого ТП должны быть свои: заголовок h1, ключевые слова, описание страницы, заголовок окна браузера и канонический адрес.
Для компонента bitrix:catalog.element в element.php, не забудте установить параметры
Код
 
"SET_TITLE" => $arParams['SET_TITLE'],
"SET_BROWSER_TITLE" => $arParams['SET_BROWSER_TITLE'],
"SET_META_KEYWORDS" => $arParams['SET_META_KEYWORDS'],
"SET_META_DESCRIPTION" => $arParams['SET_META_DESCRIPTION'],
Немного костыльный вариант, но временно размещу сдесь - позже сделаю более "красиво" и допишу в заметку)

Вариант не использовать параметр ?TARGET_OFFER=, а создать полноценную ЧПУ сраницу вида:
/catalog/#РАЗДЕЛ#/#ТОВАР#/#ID_ТП#

На индексную страницу /catalog/ добавляем:
Код
$isOfferUrl = explode('/', $APPLICATION->GetCurDir());
if (empty($isOfferUrl['4'])) {
    $SEF_URL_TEMPLATES = [
                    "sections" => "",
                    "section" => "#SECTION_CODE#/",
                    "element" => "#SECTION_CODE#/#ELEMENT_CODE#/",
                    "compare" => "compare/",
                    "smart_filter" => "#SECTION_CODE#/filter/#SMART_FILTER_PATH#/apply/",
   ];
}
 if (!empty($isOfferUrl['4'])) {
     $SEF_URL_TEMPLATES = [
                    "sections" => "",
                    "section" => "#SECTION_CODE#/",
                    "element" => "#SECTION_CODE#/#ELEMENT_CODE#/" . $isOfferUrl['4'] . '/',
                    "compare" => "compare/",
                    "smart_filter" => "#SECTION_CODE#/filter/#SMART_FILTER_PATH#/apply/",
    ];
}
$APPLICATION->IncludeComponent(
                "bitrix:catalog",
                "",
                [
                    ... ПРОЧИЕ ПАРАМЕТРЫ bitrix:catalog
                    "SEF_URL_TEMPLATES" => $SEF_URL_TEMPLATES,
                   
                ],
                false
            );

В component_epilog.php детальной карточки

Код
if (isset($templateData['JS_OBJ'])) {

    $isOfferUrl = explode('/', $APPLICATION->GetCurDir());
    if (!empty($isOfferUrl['4'])) {
        $TARGET_OFFER = $isOfferUrl['4'];
    }
    if (!empty($TARGET_OFFER)) {
        $offerNum = array_search($TARGET_OFFER, $templateData['OFFER_IDS']);

        $dbOfferData = CIBlockElement::GetList(
            false,
            array(
                   '=ID' => $TARGET_OFFER
            ),
            false,
            array(
                  'nTopCount' => 1
            ),
            array(
                'NAME',
                'IBLOCK_ID',
                'CANONICAL_PAGE_URL'
            )
        )->GetNext();

       $dbOfferSeoProps = new \Bitrix\Iblock\InheritedProperty\ElementValues(
            $dbOfferData['IBLOCK_ID'], // ID инфоблока с ТП
            $TARGET_OFFER // ID элемента
        );
        $arOfferSeoProps = $dbOfferSeoProps->getValues();
        $APPLICATION->SetTitle($dbOfferData['NAME']);
        $APPLICATION->SetPageProperty("title", $arOfferSeoProps['ELEMENT_META_TITLE']);
        $APPLICATION->SetPageProperty("keywords", $arOfferSeoProps['ELEMENT_META_KEYWORDS']);
        $APPLICATION->SetPageProperty("description", $arOfferSeoProps['ELEMENT_META_DESCRIPTION']);
        $APPLICATION->SetPageProperty("canonical", $dbOfferData['CANONICAL_PAGE_URL']);

        if ($offerNum !== false) {
            ?>
            <script>
                BX.ready(function () {
                    if (!!window.<?= $templateData['JS_OBJ'] ?>) {
                        window.<?= $templateData['JS_OBJ'] ?>.setOffer(<?echo $offerNum ?>);
                    }
                });
            </script>
            <?
        } else {
            // TODO переделать на SetHttpStatus
            LocalRedirect('/404.php');
        }
    }
}
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 

Стоимость разработки на 1С-Битрикс:

Индивидуальная разработка магазина

от 400 000 руб. от 5-ти недель

Разработка магазина на 1С-Битрикс с нуля. Дизайн, сборка и оптимизация производительности под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Запуск сайта на готовом решении

от 100 000 руб. от 7-ми дней

Вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Магазин, быстро запускается на базе одного из 200-та готовых решений.

Мобильное приложение

от 400 000 руб. от 1-го месяца

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 250 000 руб. от 1-го месяца

Корпоративный сайт с информационными разделами, каталогом товаров или услуг. Включает формы обратной связи карточек каталога, любое количество статичных и динамичных разделов.

Инфресурс

от 300 000 руб. от 5-ти недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

Лечение сайтов от вирусов

от 30 000 руб. от 2-х дней

Выполню полную проверку сайта и окружения. В случае обнаружения вирусов проведу полный комплекс лечения проекта и закрытия лазеек.