Массовый импорт модификации продуктов [miniShop2]


В поддержке задали вопрос как можно массово добавлять модификации для продуктов (разные цены для разных размеров, артикулы уникальны для каждого размера).

Ниже привожу пример…

постановка
К примеру, есть бюстгальтер с артикулом BL802. У него есть цвет, вес, название, описание и т.п.
И так представлены модификации:

артикул товара; размер; цена; количество; собственный артикул размера; вес
BL802;32A;1860.0;1;BL802-32A;150
BL802;32B;1860.0;1;BL802-32B;150
BL802;32C;1860.0;1;BL802-32C;150
BL802;34B;1896.0;5;BL802-34B;150
BL802;34C;1896.0;0;BL802-34C;150
BL802;36B;1896.0;0;BL802-36B;150
BL802;36C;1896.0;5;BL802-36C;150
BL802;38B;1896.0;5;BL802-38B;150
BL802;38C;1918.0;5;BL802-38C;150


$msoptionsprice = $modx->getService('msoptionsprice');
$msoptionsprice->initialize('web');

/*
 * основной артикул продукта выкидываем, он не используется
 * в опции модификации идет размер
 */
$modifications = array(
    array(
        'price'   => '1860.0',
        'article' => 'BL802-32A',
        'weight'  => '150',
        'options' => array(
            'size' => '32A'
        )
    ),
    array(
        'price'   => '1860.0',
        'article' => 'BL802-32B',
        'weight'  => '150',
        'options' => array(
            'size' => '32B'
        )
    ),
    array(
        'price'   => '1860.0',
        'article' => 'BL802-32C',
        'weight'  => '150',
        'options' => array(
            'size' => '32C'
        )
    ),
    array(
        'price'   => '1896.0',
        'article' => 'BL802-34B',
        'weight'  => '150',
        'options' => array(
            'size' => '34B'
        )
    ),
    array(
        'price'   => '1896.0',
        'article' => 'BL802-34C',
        'weight'  => '150',
        'options' => array(
            'size' => '34C'
        )
    ),
    array(
        'price'   => '1896.0',
        'article' => 'BL802-36B',
        'weight'  => '150',
        'options' => array(
            'size' => '36B'
        )
    ),
    array(
        'price'   => '1896.0',
        'article' => 'BL802-36C',
        'weight'  => '150',
        'options' => array(
            'size' => '36C'
        )
    ),
    array(
        'price'   => '1896.0',
        'article' => 'BL802-38B',
        'weight'  => '150',
        'options' => array(
            'size' => '38B'
        )
    ),
    array(
        'price'   => '1918.0',
        'article' => 'BL802-38C',
        'weight'  => '150',
        'options' => array(
            'size' => '38C'
        )
    ),
);

/* идентификатор продукта */
$rid = 152;

/* если у продукта еще нет нужных опций то создаем */
foreach ($modifications as $modification) {
    if (!isset($modification['options'])) {
        continue;
    }
    $msoptionsprice->setProductOptions($rid, $modification['options']);
}

/* создаем модификации продукта */
$modifications = $modx->call('msopModification', 'saveProductModification', array(&$modx, $rid, $modifications));


27 октября 2016, 12:54    Володя   G+  
9    663 +5

Комментарии (0)

    Вы должны авторизоваться, чтобы оставлять комментарии.