Magento настройка атрибута продукта «Использовать значение по умолчанию» с помощью updateAttributes - PullRequest
7 голосов
/ 16 февраля 2012

У меня есть настройка нескольких магазинов, и я устанавливаю атрибут продукта для определенного магазина, чтобы использовать опцию «Использовать значение по умолчанию» - (т. Е. Использовать значение в представлении магазина), следующим образом:

$_product = Mage::getModel('catalog/product');
$_product->load($productId);
$_product->setStoreId($storeId)->setName(false)->save();

Устанавливает атрибут Name для storeId для $ productId для использования «Использовать значение по умолчанию»

Учитывая, что у меня много атрибутов, которые я пытаюсь использовать:

Mage::getSingleton('catalog/product_action')->updateAttributes(array($productId), array('name' => false), $storeId);

Но это не устанавливает флажок «Использовать значение по умолчанию» в значение true.

Как я могу использовать -> updateAttributes, чтобы установить значение хранилища для использования опции «Использовать значение по умолчанию»?

Скриншот:

enter image description here

Ответы [ 2 ]

4 голосов
/ 20 февраля 2012

Флаг «Использовать значение по умолчанию» нигде не хранится в базе данных.

Ядро Magento использует этот флаг для сохранения продуктов:

   /**
     * Check "Use Default Value" checkboxes values
     */
    if ($useDefaults = $this->getRequest()->getPost('use_default')) {
        foreach ($useDefaults as $attributeCode) {
            $product->setData($attributeCode, false);
        }
    }

Перед выполнением каких-либо других действий.вещи.

Я бы посмотрел на Mage_Adminhtml_Catalog_ProductController (app / code / core / Mage / Adminhtml / controllers / Catalog / ProductController.php) и узнал, как это делает ядро ​​Magento.

Специально saveAction() и _initProductSave()

Надеюсь, это направит вас в правильном направлении.

1 голос
/ 22 декабря 2016

Просто используйте 0 в качестве идентификатора хранилища (хранилища администратора), что аналогично значениям по умолчанию в Magento Admin.

Mage::getSingleton('catalog/product_action')
    ->updateAttributes(
        array($productId),
        array('name' => false),
        0);

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

Может быть способ программно установить их. Я не уверен.

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