Кастомный код позволяет сделать импорт максимально гибким. Применяя php код можно модифицировать импорт как вам будет удобно и нужно.
Этот код выполняется до обхода товара.
Если вам надо запустить код для изменения товара в цикле воспользуйтесь пунктом Кастомный код.
И многое другое. Все задачи тяжело перечислить из-за их возможного разнообразия.
Полезная подсказка. Для того чтобы понимать с чем работаете рекомендую сделать print_r нужных данных. Смотреть рекомендуется через Ссылка запуска по CRON внизу окна слева. Эту ссылку откройте в браузере для отладки.
Подробнее ниже.
Для просмотра конфигурации и самого XML код
echo "<pre>";
print_r($data);
exit();
Для того чтобы запретить обновление акций можно поставить
$data['special_save'] = true;
Для просмотра объекта XML с товарами
echo "<pre>";
print_r($rows);
exit();
Если у вас не обновляется статус товара поставьте вот такую строку
$data['update_status'] = true;
Для импорта на двух языках достаточно добавить такой код
$data['lang_data'] = array(
'lang_id' => 2,
'fields' => array(
'name' => 'name_ua',
'description' => 'description_ua'
)
);
Где
Еще можно добавить свои кастомные категории в этом пункте, например так
$data['custom_categories'][] = array(
'category_name' => 'Название категории',
'category_id' => 'id категории',
'parent_id' => id родительской категории (если нет можно поставить 0),
);
После чего обязательно надо добавить категории строкой
$this->importSetCategory($data);
в теге categories_ и разделены между собой ||
В этом пункте код
$data['custom_categories'] = array();
foreach($rows as $row){
$cats = explode('||', (string)$row->categories_);
foreach($cats as $cat){
if(trim($cat)){
$categories[trim($cat)] = trim($cat);
}
}
}
$cati = 1;
$data['custom_cat_ids'] = array();
foreach($categories as $category){
$data['custom_cat_ids'][$category] = $cati;
$data['custom_categories'][] = array(
'category_name' => $category,
'category_id' => $cati,
'parent_id' => 0,
);
$cati++;
}
$this->importSetCategory($data);
А в следующем Кастомный код при обходе товара вот такой код
$cats = $product['category_id'][0];
$product['category_id'] = array();
if($cats){
foreach(explode('||', $cats) as $cat_name){
if(trim($cat_name)){
if(isset($data['custom_cat_ids'][trim($cat_name)])){
$product['category_id'][] = $data['custom_cat_ids'][trim($cat_name)];
}
}
}
}
Если вам надо работать с атрибутами только с одной выбранной группы это можно сделать добавив пару строк
$data['attribute_to_group'] = true;
if(isset($data['attributes'])){
unset($data['attributes']);
}
$this->importGetOcAttributes($data);
Если вам надо загружать в остатки товара с опциями не сумму остатков всех опций а оригинальный остаток достаточно добавить
$data['quantity_original'] = true;
Если вам надо забирать ЧПУ уже готовое с фида вы можете указать вот так
$data['custom_url'] = 'model';
Если вам надо отключать товары которых нет в фиде в этом пункте поставьте
$data['proff'] = [];
$sq = $this->db->query("SELECT product_id, status FROM " . DB_PREFIX . "product WHERE unixml_feed =" . $data['import_id'] . " AND status = 0");
foreach($sq->rows as $r){
$data['proff'][] = $r['product_id'];
}
$this->db->query("UPDATE " . DB_PREFIX . "product SET status = 0 WHERE unixml_feed = " . $data['import_id']);
$this->importSetProductQuantity($data, $product);
if(!$product['quantity']){
$product['continue'] = true;
}
$product['status'] = 0;
if($data['status'] == 'update' && !in_array($product['product_id'], $data['proff'])){
$product['status'] = 1;
}