Варианты дублирования Magento - PullRequest
2 голосов
/ 29 декабря 2010

Я создаю пользовательские параметры для продуктов в magento со следующими параметрами:

    $options = array();
    $options = array(
        'title' => 'Select Options',
        'type' => 'radio',
        'is_require' => 1,
        'sort_order' => 0,
        'values' => array()
    );
    $options['values'][] = array(
        'title' => $customAttributeString,
        'price' => 0.00,
        'price_type' => 'fixed',
        'sku' => $uniqueId,
        'sort_order' => '1'
    );

    $id = Mage::getModel('catalog/product')->getIdBySku($sku);
    $product = Mage::getModel('catalog/product')->load($id);

    if(!$product->getOptionsReadonly()) {
        $product->setProductOptions(array($options));
        $product->setCanSaveCustomOptions(true);
        $product->save();
    }

У меня это работает в цикле, каждый раз с другим SKU, и когда я запускаю цикл один раз, он прекрасно генерирует пользовательские параметры для первого продукта, второй продукт имеет свои собственные пользовательские параметры и пользовательские параметры первых продуктов. и у третьего продукта есть пользовательские параметры для всех трех и т. д. Кто-нибудь может дать мне некоторое представление о том, почему это происходит?

Ответы [ 3 ]

15 голосов
/ 13 февраля 2011

Извините за поздний ответ, но, поскольку Magento управляет product_option как синглтоном, вам нужно сбрасывать его на каждой итерации:

Mage::getSingleton('catalog/product_option')->unsetOptions();

Надеюсь, это поможет.

Гийом

1 голос
/ 30 декабря 2010
$product->setProductOptions(array($option));

Обратите внимание, что вы устанавливаете не $ options, а $ option (без "s" в конце).Возможно, он пересекается с некоторыми из ваших переменных, не показанных во фрагменте кода.

Также $ options = array ();здесь бесполезно, просто удалите его

Было бы лучше, если бы вы включили там цикл итерации и инициализацию $ customAttributeString, $ sku, $ uniqueId для вашего примера кода.

0 голосов
/ 19 июля 2016
Mage::getSingleton('catalog/product_option')->unsetOptions();

Работает нормально перед итерацией цикла

Atif

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...