Php Magento仅在存储级别保存某些属性
我在Magento有两个商店,每个产品都添加到“全局”商店(id=0),以便在两个商店中都可用,第一个商店反映全局商店中的产品,没有在商店级别添加属性,第二个商店应该做相同的事,只是价格不同。我创建了一个脚本,用于从CSV同步产品价格和说明:Php Magento仅在存储级别保存某些属性,php,magento,store,entity-attribute-value,Php,Magento,Store,Entity Attribute Value,我在Magento有两个商店,每个产品都添加到“全局”商店(id=0),以便在两个商店中都可用,第一个商店反映全局商店中的产品,没有在商店级别添加属性,第二个商店应该做相同的事,只是价格不同。我创建了一个脚本,用于从CSV同步产品价格和说明: //Load global product Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); $prod = Mage::getModel('catalog/prod
//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();
这里的问题是,当我为store 2保存价格时,它会在store级别保存所有其他属性,这意味着,例如,对于产品的描述,“使用默认值”标志在administration中处于unchecked状态,如果我想更改这两个商店的描述,我必须在global和store 2中都这样做。我做错了什么?有办法做到这一点吗?您可以使用singleton:
Mage::getSingleton('catalog/product_action')->updateAttributes(
array($prod->getId()),
array('price'=>$price2),
Mage_Core_Model_App::ADMIN_STORE_ID
);