Допустим мы добавляем товар при помощи метода CIBlockElement::Add, товар добавляем в инфоблок с ID = 1, так же товар имеет набор свойств, к примеру: PRICE, ARTICLE, SALE.
PRICE - содержит цену на элемент.
ARTICLE - содержит артикул элемента
SALE - записан размер скидки на элемент при её наличии.
Помимо свойств элементу добавляем превью и детальное изображение, превью описание и детальное описание.
Код добавления такого элемента будет выглядеть следующим образом:
use Bitrix\Main\Loader;
Loader::includeModule('iblock');
$preview_picture = CFile::MakeArray($preview_url); // $preview_url содержит ссылку на изображение, метод CFile::MakeArray подготавливает массив описания изображения для загрузки
$detail_picture = CFile::MakeArray($detail_url); // $detail_url содержит ссылку на изображение, метод CFile::MakeArray подготавливает массив описания изображения для загрузки
$NAME = 'Элемент 1';
$preview_text = 'Текст краткого описания элемента';
$detail_text = 'Текст детального описания элемента';
//массив со свойствами элемента
$PROP = array(
"PRICE" => '12799',
"ARTICLE" => '33345821',
"PRICE" => '790',
);
//Получение символьного кода путём транслитерации наименования элемента
$arTranslitParams = array("replace_space"=>"-","replace_other"=>"-"); // Указываем на какой символ заменять пробел, на какой символ заменять все остальные символы отличные от букв и цифр.
$CODE = Cutil::translit(strtolower($NAME),"ru",$arTranslitParams); // функцией strtolower - преобразуем все Заглавные буквы в Названии элемента в строчные буквы. Cutil::translit - транслитерирует русское наименование элемента.
$arLoadProductArray = Array(
'CODE' => $CODE, // Символьный код элемента, будем получать при помощи транслитерации из названия
"MODIFIED_BY" => 1, // элемент изменен пользователем с ID 1
"IBLOCK_SECTION_ID" => '', // Если не указан, то элемент будет лежать в корне раздела
"IBLOCK_SECTION" => 76, // ID родительского раздела элемента
"IBLOCK_ID" => 1, // ID инфоблока элемента
"PROPERTY_VALUES" => $PROP, // Массив свойств элемента
"NAME" => $NAME, // Наименование элемента
"ACTIVE" => "Y", // Статус активности элемента
"PREVIEW_PICTURE" => $preview_picture,
"DETAIL_PICTURE" => $detail_picture,
"PREVIEW_TEXT_TYPE" => "html", // Тип краткого описания элемента
"PREVIEW_TEXT" => $preview_text, // Текст краткого описания элемента
"DETAIL_TEXT_TYPE" => "html", // Тип детального описания элемента
"DETAIL_TEXT" => $detail_text, // Текст детального описания элемента
);
$el = new CIBlockElement;
if ($product_id = $el->Add($arLoadProductArray)){
echo 'Элемент '.$NAME.' успешно добавлен
';
} else {
echo 'Ошибка добавления элемента: '.$NAME.'
';
}
Использование сервиса перевода Яндекс.Переводчик для получения символьного кода на латинице из наименования элемента.
Если же Вы хотите чтобы символьный код элемента являлся переводом на английский наименования элемента, тогда следует воспользоваться внешним сервисом переводом, например Яндекс.Переводчик. Для начала следует получить API ключ сервиса Яндекс.Переводчик, сделать это можно на
Функция для использования сервиса:
require_once(__DIR__."/parser.php");
function yandexTranslate($text){
$key = 'ваш_api_ключ_яндекс_переводчика';
$params = array( 'key' => $key , 'text' => strtolower($text), 'lang' => 'ru-en',);
$query = http_build_query($params);
$response = Parser::getPage([
"url" => 'https://translate.yandex.net/api/v1.5/tr.json/translate?'.$query,
]);
$data = json_decode($response['data']['content'], true);
$text = $data;
return str_replace(' ', '-',$text['text'][0]);
}
В данной функции используется библиотека обёртка для cURL - Parser. По этой ссылке скачайте архив с ней и разархивируйте в папку со скриптом.
Итоговый код с использованием сервиса переводчика:
require_once(__DIR__."/parser.php");
use Bitrix\Main\Loader;
Loader::includeModule('iblock');
function yandexTranslate($text){
$key = 'ключ_api_яндекс_переводчика';
$params = array( 'key' => $key , 'text' => strtolower($text), 'lang' => 'ru-en',);
$query = http_build_query($params);
$response = Parser::getPage([
"url" => 'https://translate.yandex.net/api/v1.5/tr.json/translate?'.$query,
]);
$data = json_decode($response['data']['content'], true);
$text = $data;
return str_replace(' ', '-',$text['text'][0]);
}
$preview_picture = CFile::MakeArray($preview_url); // $preview_url содержит ссылку на изображение, метод CFile::MakeArray подготавливает массив описания изображения для загрузки
$detail_picture = CFile::MakeArray($detail_url); // $detail_url содержит ссылку на изображение, метод CFile::MakeArray подготавливает массив описания изображения для загрузки
$NAME = 'Элемент 1';
$preview_text = 'Текст краткого описания элемента';
$detail_text = 'Текст детального описания элемента';
//массив со свойствами элемента
$PROP = array(
"PRICE" => '12799',
"ARTICLE" => '33345821',
"PRICE" => '790',
);
//Получение символьного кода путём перевода наименования элемента с использованием сервиса Яндекс Переводчик
$CODE = yandexTranslate($NAME);
$arLoadProductArray = Array(
'CODE' => $CODE, // Символьный код элемента, будем получать при помощи транслитерации из названия
"MODIFIED_BY" => 1, // элемент изменен пользователем с ID 1
"IBLOCK_SECTION_ID" => '', // Если не указан, то элемент будет лежать в корне раздела
"IBLOCK_SECTION" => 76, // ID родительского раздела элемента
"IBLOCK_ID" => 1, // ID инфоблока элемента
"PROPERTY_VALUES" => $PROP, // Массив свойств элемента
"NAME" => $NAME, // Наименование элемента
"ACTIVE" => "Y", // Статус активности элемента
"PREVIEW_PICTURE" => $preview_picture,
"DETAIL_PICTURE" => $detail_picture,
"PREVIEW_TEXT_TYPE" => "html", // Тип краткого описания элемента
"PREVIEW_TEXT" => $preview_text, // Текст краткого описания элемента
"DETAIL_TEXT_TYPE" => "html", // Тип детального описания элемента
"DETAIL_TEXT" => $detail_text, // Текст детального описания элемента
);
$el = new CIBlockElement;
if ($product_id = $el->Add($arLoadProductArray)){
echo 'Элемент '.$NAME.' успешно добавлен
';
} else {
echo 'Ошибка добавление элемента: '.$NAME.'
';
}