Magento仅在商店级别保存一些属性

时间:2015-01-21 10:23:15

标签: php magento store entity-attribute-value

我在Magento有两家商店,每一件产品都被添加到"全球" store(id = 0)以便它在两个商店都可用,第一个商店在全球商店中反映产品,在商店级别没有添加任何属性,第二个商店应该做同样的事情,除了价格是不同。我创建了一个脚本来同步CSV中的产品价格和描述:

//Load global product
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$prod = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);

//Save global data for product
if ($prod->getDescription() != $desc) $prod->setDescription($desc);
if ($prod->getPrice() != $price1) $prod->setPrice($price1);
$prod->save();

//Reload product in store 2
$prod2 = Mage::getModel('catalog/product')->setStoreId(2)->load($prod->getId());

//Save data for store 2
if ($prod2->getPrice() != $price2) $prod2->setPrice($price2);
$prod2->save();

这里的问题是,当我保存商店2的价格时,它会保存商店级别的所有其他属性,这意味着例如对于产品的描述,"使用默认值"在管理中未选中标记,如果我想更改两个商店的描述,我必须在全局和商店2中执行此操作。我做错了什么?有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

你可以使用单身人士:

Mage::getSingleton('catalog/product_action')->updateAttributes(
    array($prod->getId()),
    array('price'=>$price2),
    Mage_Core_Model_App::ADMIN_STORE_ID
);