3.2 Умножать товар на опцию

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']
×
Информация только для UniXML 7.x
Модуль не работает в рф и работать не будет

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

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

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

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

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