Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Magento仅在存储级别保存某些属性_Php_Magento_Store_Entity Attribute Value - Fatal编程技术网

Php Magento仅在存储级别保存某些属性

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

我在Magento有两个商店,每个产品都添加到“全局”商店(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();
这里的问题是,当我为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
);