3.2 Умножать товар на опцию. Этот пункт позволяет размножить один товар на его вариации, как этого требуют маркетплейсы Например у вас есть футболка, в ней есть опции Цвет (Синий/Красный) и Размер (S/M/L). Выбрав в наборах эти опции на выходе мы получим 6 разных offer:
В некоторых маркетплейсах это потом группируется в варианты товара (опции в opencart)
Ниже можно добавить Наборы опций.
Наборы опций - это некие логические блоки которые объединяют похожие по смыслу опции. Давайте на примере.
У нас есть в продаже Футболки и Штаны
Так вот нам надо будет создать два блока с опциями В первый блок добавим опции Выберите цвет футболки+Выберите цвет штанов - это будет логический блок опций обозначающий цвет. Во второй опции Выберите размер футболки+Выберите размер штанов который будет у нас идти как размер. В самом модуле уже эти блоки будут доступны как [[optionset1]] и [[optionset2]]. Это можно вставлять туда где надо вывести Значение опций.
Когда добавляем опции в наборы надо четко разграничивать опции по смыслу. Например Если у нас есть опции:
То в набор который будет группировать цвет добавляем выделенные выше.
По умолчанию offer id в фиде равен id товара, однако когда мы выбираем умножение на опции то у нас не может быть один id на все варианты товара. В таком случае модуль генерирует id в формате: (id товара) +( id опций + id значений опции). Шаблон можно поменять. Он находится в $data['product_option_id_pattern'] и в $data['option_ids_pattern'].
$data['option_ids_pattern'] - это шаблон генерации блока с id опции и id значения опции.
По умолчанию значение параметра $data['option_ids_pattern'] = '{option_id}{option_value_id}';
Где {option_id} - это id опции а {option_value_id} - это id значения опции.
Если у вас будет два блока опций (id 5 и id 7 и их значения с id 243 и 395) то эта часть будет генерировать такую приставку: 52437395.
Если мы поставим (через кастомный код) параметр $data['option_ids_pattern'] = '.{option_id}.{option_value_id}'; то будет .5.243.7.395
$data['product_option_id_pattern'] - это шаблон генерации блока id товара который состоит из самого id товара и id набора опций.
По умолчанию значение параметра $data['product_option_id_pattern'] = '{product_id}{option_ids}';
Где {product_id} - id товара, а {option_ids} - это значение из обхода блоков опций ($data['option_ids_pattern']).
Если у нас будет id товара 2435 то конечный offer id будет 2435.5.243.7.395 или 243552437395
Если поставите значение как {product_id}-{option_ids} то id будет
Если такое {option_ids}_{product_id} то 52437395_2435 или наоборот 2435_52437395
В шаблон можно прописать любые данные - главное что бы тот маркетплейс куда будете выгружаться принимал их в таком формате. Лучше конечно только цифры без точек и прочих разделителей.
Можно создать бесконечное количество наборов, однако надо понимать что не все нужно умножать, рекомендуется только Размер, Цвет, и другие модификации. С увеличением наборов в конечном XML будут увеличиваться количество offer.
Для запрета подсчета Акции в зависимости от процента акции можно в пункте 4.2 поставить $data['special_percent'] = false;
Для подсчета старой цены в зависимости от процентного соотношения можно в пункте 4.2 добавить $data['special_percent_revers'] = true;
Если вам надо опции в виде списка опций например
<options> <option name="Розмір"> <values> <value> <name>45.5</name> <quantity>2</quantity> <price>0.0000</price> <prefix>+</prefix> </value> <value> <name>46</name> <quantity>1</quantity> <price>0.0000</price> <prefix>+</prefix> </value> </values> </option> </options>
то в пункте 4.3 можно добавить код
$sql = "SELECT od.name as option_name,
ovd.name as option_value,
pov.quantity as option_quantity,
pov.price as option_price,
pov.price_prefix as option_price_prefix
FROM " . DB_PREFIX . "product_option po
LEFT JOIN " . DB_PREFIX . "product_option_value pov ON(po.product_option_id = pov.product_option_id)
LEFT JOIN " . DB_PREFIX . "option_description od ON(po.option_id = od.option_id)
LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON(pov.option_value_id = ovd.option_value_id)
WHERE po.product_id = '" . $product['product_id'] . "'
AND od.language_id = '" . $data['language'] . "'
AND ovd.language_id = '" . $data['language'] . "'
";
$options_query = $this->db->query($sql);
if($options_query->num_rows){
$opt_xml = '';
foreach($options_query->rows as $row){
$opt_xml .= '<value><name>' . $row['option_value'] . '</name>';
$opt_xml .= '<quantity>' . $row['option_quantity'] . '</quantity>';
$opt_xml .= '<price>' . $row['option_price'] . '</price>';
$opt_xml .= '<prefix>' . $row['option_price_prefix'] . '</prefix></value>';
}
$product['attributes_full'][$row['option_value']] = array(
'name' => 'options',
'text' => '<option name="' . $row['option_name'] . '"><values>' . $opt_xml . '</values></option>',
'end' => 'options',
'decode' => true,
);
}
В параметрах системы UniXML настройка находится в $data['option_multiplier_status']