@DeeUs

Генерация метатегов, как реализовать?

Здравствуйте!
Для указания метаданных и h1 (для разделов) создал доп поля.
Для карточек товаров добавил свойства

Нужно реализовать автогенерацию метаданных для тех разделов\товаров, у которых они не прописаны в новых полях.

как получить значения полей для разделов разобрался:
код
if(0 < intval($arResult["VARIABLES"]["SECTION_ID"])) {
                        $arFilter["ID"] = $arResult["VARIABLES"]["SECTION_ID"];
                    } elseif("" != $arResult["VARIABLES"]["SECTION_CODE"]) {
                        $arFilter["=CODE"] = $arResult["VARIABLES"]["SECTION_CODE"];
                    }

                    $arSelect = array("UF_META_T", "UF_META_K", "UF_META_D", "UF_H1");

                    $rsSections = CIBlockSection::GetList(array(), $arFilter, false, $arSelect);
                    if($arSection = $rsSections->Fetch()) {

                        $_h1_ = $arSection["UF_H1"];
                        $_title_ = $arSection["UF_META_T"];
                        $_desc_ = $arSection["UF_META_D"];
                        $_keyw_ = $arSection["UF_META_K"];
                    }


(public_html\bitrix\templates\tshop\components\bitrix\catalog\main\section.php - тут вроде как надо работает.)

А вот куда прописывать setPageProperty() - не пойму.
пробовал писать в том же файле, что и код выше - не помогает
пробовал писать в component epilog - тоже не срабатывает
  • Вопрос задан
  • 524 просмотра
Пригласить эксперта
Ответы на вопрос 1
@kudis
Bitrix developer
В component_epilog setPageProperty() работает, если до этого файла ваши данные доходят.
Не забывайте про кэш и про необходимость выноса данных из него:
$this->setResultCacheKeys([
        'YOUR_PARAM',
    ]);

а вообще, все свойства раздела, если вы именно так вынесли Ваши данные, доступны в компоненте каталог. Вот только заполнять данные в мета-поля нужно, используя методы отложенных функций.
пример из доков:
$APPLICATION->AddBufferContent('ShowCondTitle');
function ShowCondTitle()
{
  global $APPLICATION;
 if (!$APPLICATION->GetTitle())
    return "Стандартная страница";
 else
    return $APPLICATION->GetTitle();
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы