2.14 Опції

Опції це налаштування групування варіантів товару в опції. Як правило, у тегу offer є атрибут group_id і в тегах <param name="Назва атрибута">  вказується різновид. Це налаштування йде з вказанням атрибута або тега. У 99% це "@group_id"

Якщо опції задані у форматі

  <options name="Назва опції">
    <option>
      <name>S</name>
      <quantity>555</quantity>
      <price>120</price>
    </option>
    <option>
      <name>L</name>
      <quantity>777</quantity>
      <price>150</price>
    </option>
  </options>

треба в налаштуваннях Опції прописати options @name > option > name-name, quantity-quantity,price-price

Тобто при структурі

  <variants name="Назва опції">
    <item>
      <title>S</title>
      <stock>555</stock>
      <cost>120</cost>
    </item>
    *********
  </variants>

треба в налаштуваннях Опції прописати variants @name > item > title-name, stock-quantity,cost-price

Це поле можна налаштувати, щоб модуль зміг групувати різновиди товару в опції. Якщо не вказувати нічого, то модуль завантажить кожен різновид як окремий товар.

У цьому полі є додаткові налаштування Заборонити оновлювати, Групувати за опціямиВідповідність значень опцій.

Якщо поставити заборонити оновлювати, то при оновленні товарів опції не будуть зачеплені та переписані в магазині.

У налаштуванні Групувати за опціями треба вказати, за якими атрибутами йде групування. Тобто якщо у нас є атрибути Розмір та Колір, то треба вказати Розмір і з нового рядка Колір. Праворуч треба також вказати Розмір та Колір - тут вказується, як опція називатиметься в магазині. Наприклад, якщо у вас Розмір у магазині названо як Оберіть розмір, то Ліворуч буде "Розмір" (назва атрибута групування), а праворуч "Оберіть розмір".

У пункті Відповідність значень опцій можна задати відповідності значень опцій. Наприклад, якщо у вас Розмір вказано як "XS", а у фіді як "міні", то треба ліворуч вказати "міні", а праворуч "XS". Кожна відповідність з нового рядка. Перша ліворуч змінюється на першу праворуч, 10-та на 10-ту і за аналогією.

Для того щоб вказати, яку опцію створювати, достатньо в пункті Кастомний код ДО імпорту прописати $data['option_type'] = 'checkbox'; і модуль створить потрібний тип опції. За замовчуванням модуль створює тип опції - перемикач (radio). Можна використовувати checkbox, select тощо.

За замовчуванням опції не обов'язкові до вибору при купівлі товару, але якщо в пункті Кастомний код ДО імпорту прописати $data['option_required'] = 1;  то опції будуть обов'язковими.

Якщо у вас є в опціях фото, які треба додати в базу і завантажити, у пункті Кастомний код ДО імпорту прописати $data['option_image'] = 'o_v_image';

де o_v_image - це поле для фото.

Також треба додати в пункті 4.2 ось так

$data['option_data']['image'] = 'picture';

де picture - це тег для фото опції.

Якщо у вас є в опціях окрема модель (sku) і їх треба додати в базу, достатньо в пункті Кастомний код ДО імпорту прописати

$data['option_data'][ 'optsku'] = 'vendorCode';

);

де optsku - це поле для моделі опції, а vendorCode - це тег, звідки брати модель

Якщо у вас кастомні опції, можна задати через пункт Кастомний код при обході товару ось так

$data['unixml_import_xml_product_options'] = 1;
$options = $this->importGetXmlData($row, 'option @name', 'array');
if($options){
  foreach($options as $option){
    $product['options'][$option['name']][$option['value']] = array(
      'quantity'      => $product['quantity'],
      'subtract'      => '1',
      'price'         => '',
      'price_prefix'  => '+',
      'points'        => '',
      'points_prefix' => '+',
      'weight'        => '',
      'weight_prefix' => '+'
    );
  }
}

Наприклад, якщо у нас опції у фіді йдуть у фіді

<options>
  <option name="Наволочки">
    <values>
      <value>
        <name>Персональні 2 шт (перешив)</name>
        <quantity>500</quantity>
        <price>60.0000</price>
        <prefix>+</prefix>
      </value>
    </values>
  </option>
  <option name="Розмір">
    <values>
      <value>
        <name>Сімейний</name>
        <quantity>92</quantity>
        <price>420.0000</price>
        <prefix>+</prefix>
      </value>
    </values>
  </option>
</options>

тоді код буде

$data['unixml_import_xml_product_options'] = 1;
foreach($row->options->option as $option){
  $option = (array)$option;
  $option_name = str_replace(array_keys($option_replacer), array_values($option_replacer), $option['@attributes']['name']);
  foreach($option['values']->value as $option_value){
    $option_value = (array)$option_value;
    $product['options'][$option_name][$option_value['name']] = array(
      'quantity'      => $option_value['quantity'],
      'subtract'      => '1',
      'price'         => $option_value['price'],
      'price_prefix'  => $option_value['prefix'],
      'points'        => '',
      'points_prefix' => '+',
      'weight'        => '',
      'weight_prefix' => '+'
    );
  }
}
×
Актуальна версія UniXML 7.7

Розробник модуля - Прут Микола.

Працюю з opencart з 2010 року.

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

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

Копіювання матеріалу або використання неліцензійного модуля заборонено.