Кастомный код до импорта

Кастомный код позволяет сделать импорт максимально гибким. Применяя 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;
}

×
Информация только для UniXML 7.x
Модуль не работает в рф и работать не будет

Разработчик модуля - Прут Николай.

Работаю с opencart c 2010 года.

Создал успешные модули UniXML Pro, MicrodataPro, Easyphoto, Редиректор 301 и другие.

Авторское право на модуль UniXML и информацию на этом сайте принадлежит Прут Николаю.

Копирование материала или использования нелицензионного модуля запрещено.