Перейти к содержанию

Создание обработчика

Для реализации собственной логики в процессе импорта существует возможность создания собственных обработчиков.

Возвращаемый результат

Возвращать необходимо массив с ключами 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
        )
);