Опції це налаштування групування варіантів товару в опції. Як правило, у тегу 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' => '+'
);
}
}