Создание обработчика
Для реализации собственной логики в процессе импорта существует возможность создания собственных обработчиков.
Возвращаемый результат
Возвращать необходимо массив с ключами TYPE
, DATA
. LEVEL
- необязательный ключ. Если обработчику нечего возвращать, то этом случае вместо массива можно вернуть false
.
TYPE
- тип возвращаемого результат
DATA
- содержит сам результат работы обработчика
LEVEL
- можно явно указать уровень обработчика для данных.
<? array( "TYPE"=>"URL", "DATA"=>"http://site/path/page.html" );
Несколько значений можно сгруппировать в массив, причем для каждого необходимо указать тип (могут быть разные типы).
<? array( array( "TYPE"=>"URL", "DATA"=>"http://site/path/page.html" ), array( "TYPE"=>"URL", "DATA"=>"http://site/path/page.html" ), array( "TYPE"=>"DATA", "DATA"=>"89342" ) );
Типы возвращаемых результатов работы обработчика:
URL
- url адресELEMENT
- информация для добавления в инфобокDATA
- свободный формат
Тип URL
Сохраняется url адрес для последующей обработки.
При сохранении, записывается в ячейку для обработчика без модификаций.
При получении для передачи обработчику, системой производится автоматическая загрузка информации по url адресу и добавляется в массив результата. В обработчике отпадает необходимость загружать страницу из url.
<? array( "TYPE"=>"URL", "DATA"=>"http://site/path/page.html", "PAGE"=>"<html>...</html>" );
Тип ELEMENT
Тип для обработки и сохранения в инфоблоке элемента его свойств, цены и информации о продукте. В массиве передается информация об одном элементе.
Ключи массива:
ELEMENT
- значения полей элементаPROPERTIES
- значения свойств элементаPRICE
- список цен товараPRODUCT
- данные о продукте товараSECTION_TREE
- спиок названий дерева категорий элементаUNIQUE
- список полей для поиска существующего элемента
<? array( "TYPE"=>"ELEMENT", "DATA"=>array( "ELEMENT"=>array(), "PROPERTIES"=>array(), "PRICE"=>array(), "PRODUCT"=>array(), "SECTION_TREE"=>array(), "UNIQUE"=>array( "FIELD"=>array(), "PROPERTIES"=>array() ) ) );
Поля элемента
Ключ ELEMENT. Указываются стандартные поля при добавлении или обновлении элемента
<? "ELEMENT"=>array( "NAME"=>"Книга сборник рассказов", "IBLOCK_ID"=>5, "ACTIVE"=>"Y" )
Свойства элемента
Ключ PROPERTIES. Указывается список свойст. Для записи значения необходимо указать либо символьный код свойства, либо название. В таком случае символьный код будет получен из имени, путем транслитерации. Если свойство с таким кодом не будет найдено, оно будет создано. Можно указать тип создаваемого свойства, если оно не указано, поумолчанию будет создано свойство с типом строка.
<? "PROPERTIES"=>array( array( "NAME"=>"Ширина", "VALUE"=>78, "DESCRIPTION"=>array("mm") ), array( "CODE"=>"SIZE", "TYPE"=>"L", "VALUE"=>78 ), )
Цены
Ключ PRICE. Указываются цены для элемента. Можно указать значение цены, либо массив цен. Для записи используются стандартные ключи для передаваемых значений.
<? "PRICE"=>array( array( "PRICE"=>750, "CATALOG_GROUP_ID"=>1, "CURRENCY"=>"RUB" ), array( "PRICE"=>850, "CATALOG_GROUP_ID"=>2, "CURRENCY"=>"RUB" ) )
Данне продукта
Ключ PRODUCT. Указываются значения остатка, веса и прочие данные продкта товара. Ключи аналогичны стандартным при сохранении продукта.
<? "PRODUCT"=>array( "QUANTITY"=>10, "WEIGHT"=>60 )
Разделы
Ключ SECTION_TREE Указывается дерево разделов для элемента, начиная от корневого.
<? "SECTION_TREE"=>array( "Одежда", "Рубашки" )
Определение элемента
Ключ UNIQUE. Указываются ключи для фильтра идентификации элемента. Осуществляется поиск элемента, если найден, то новый элемент создаваться не будет, а будет произведено обновелие найденого. Поиск может быть осуществлен как по полям элемента так, и по свойствам. Указывать можно только ключ поля, тогда значение будет выбрано из соответсвующих массивов для сохранения полей или свойст ELEMENT
,PROPERTIES
.
<? "UNIQUE"=>array( "FIELD"=>array( "NAME", "IBLOCK_ID"=>5 ), "PROPERTIES"=>array( "WEIGHT", array( "NAME"=>"Длина", ), ) )
Тип DATA
Сохраняется произвольная информация, подвергается сериализации.
При сохранении, записывается в ячейку для обработчика без модификаций.
При получении для передачи обработчику не модифицируется.
<? array( "TYPE"=>"DATA", "DATA"=>array( "INFO"=>19, "PAGE"=>7 ) );