Чтобы получить, обработать или обновить SEO элементов инфоблоков, вам необходимо работать со специальным свойством IPROPERTY_TEMPLATES. Получить его можно через объект BitrixIblockInheritedPropertyElementValues() а чтобы заполнить, нужно передать в массиве полей элемента, вложенный массив по ключу IPROPERTY_TEMPLATES

Предварительно подключим модуль и объявим глобальную переменную $USER:


<?
//Обращаемся к глобальной переменной
global $USER;
//Подключаем модуль для работы с инфоблоками
CModule::IncludeModule('iblock');

?>

Теперь можно работать.

Получить значения SEO полей элемента инфоблока

Чтобы получить нужные нам значения, методом \CIBlockElement::GetList() получим элемент по фильтру, а дальше создадим объект BitrixIblockInheritedPropertyElementValues() и методом getValues() дотянемся до SEO полей элмента.

<?

$IBLOCK_ID = 123; //Идентификатор вашего инфоблока
$rsElement = \CIBlockElement::GetList(['ID'=>'ASC'], ['IBLOCK_ID'=>$IBLOCK_ID, 'ACTIVE'=>'Y'], false, ['ID']);
if($arElement = $rsElement->GetNext()) {
    //Получим свойвства
    $ipropValues = new BitrixIblockInheritedPropertyElementValues($arElement['IBLOCK_ID'], $arElement['ID']);
    $arElement['IPROPERTY_VALUES'] = $ipropValues->getValues();
}

//Выведем SEO свойства элемента на экран
echo '<pre>';
print_r($arElement['IPROPERTY_VALUES']);
echo '</pre>';

?>


Задать, обновить SEO свойства элемента инфоблока

Если же вам нужно обновить или задать SEO для элементов инфоблока, например при обмене данными с сайтом, создаются/обновляются товары и там есть заданные или рассчитанные в процессе SEO поля, то можно воспользоваться примером ниже. Рассмотрен вариант обновления, но структура массива $arLoadProductArray аналогичная и при добавлении нового элемента.


<?

//Создаём объект 'Элемент инфоблока'
$el = new CIBlockElement;

/* тут некий парсер или обработчик JSON с информацией про элементы или обработчик xml*/

$itemFromJson = [
    'NAME' => 'Название элемента',
    'TITLE' => 'Заголовок страницы элемента',
    'DESCRIPTION' => 'Описание страницы',
    'KEYWORDS' => 'Ключевые слова'
];

$arLoadProductArray = [
    'MODIFIED_BY'    => $USER->GetID(), // элемент изменен текущим пользователем
    'IBLOCK_SECTION' => false,          // элемент лежит в корне раздела
    'NAME'           => $itemFromJson['NAME'],
    'CODE'           => CUtil::translit($itemFromJson['NAME'], ['replace_space'=>'-', 'replace_other'=>'-']), //Символьный код элемента
    'ACTIVE'         => 'Y',            // активен
    'IPROPERTY_TEMPLATES'=> [
        'ELEMENT_META_TITLE' => $itemFromJson['TITLE'],
        'ELEMENT_META_DESCRIPTION' => $itemFromJson['DESCRIPTION'],
        'ELEMENT_META_KEYWORDS' => $itemFromJson['KEYWORDS']
    ]
];

//ID существующего элемента инфоблока, он может быть получен в процессе обработки JSON
//или откуда там ваш скрипт тащит данные на сайт

$iblockElementId = 15;

//Пробуем обновить данные
$res = $el->Update($iblockElementId, $arLoadProductArray);

?>


Надеюсь эти примеры помогу вам в работе. Свои вопросы и замечания оставляйте в комментариях. Желаю удачи!
Полезная статья?
(Голосов: 3, Рейтинг: 3.25)
Вам также могут понравиться
Обновление остатков товара на складе в 1С Битрикс

Обновление остатков товара на складе в 1С Битрикс

Как правильно обновлять остатки товара на сайта под управлением CMS 1С Битрикс.

Английский для программистов

Английский для программистов

Почему IT-специалисту необходимо освоить английский язык? Разбираем в статье.

Как подключить CSS и JS файлы к шаблону 1С Битрикс

Как подключить CSS и JS файлы к шаблону 1С Битрикс

Как правильно подключать стили и скрипты к шаблону 1С Битрикс.


Комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
11.11.2024 | Константин

Если есть необходимость сблосить сео информацию элемента например после кастомной выгрузки и изменения названия, то нужно в CIBlockElement Update добавить пустые поля IPROPERTY_TEMPLATES $element = new \CIBlockElement(); $element->Update( 999, [ "NAME" => "Новое название товара", "IPROPERTY_TEMPLATES" => [ "SECTION_META_TITLE" => "", "SECTION_META_KEYWORDS" => "", "SECTION_META_DESCRIPTION" => "" ] ] );

Комментировать | 0  
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
Закрыть
11.11.2024 | Александр Андреев

Спасибо за совет! )

Комментировать | 0  
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
Закрыть