我有一个使用了加载产品的脚本
$product = Mage::getModel("catalog/product")->loadByAttribute('sku', $data['id']);
如果我修改或检索系统属性,例如体重,一切正常:
$product->getWeight(); // returns the correct weight
$product->setWeight(5.0); // correctly sets weight
我有两个自定义属性: google_product_category 和 mpn 。如果我尝试使用相同的技术修改它们,如下所示:
$product->setMpn('123ABC');
该电话不会引发错误,但数据不会保存(是的,之后我会调用$ product-> save())。
$product->setGoogleProductCategory('Electronics');
我做错了什么?
答案 0 :(得分:3)
你可以发布你的脚本吗?你是开发者模式吗?
看起来问题是因为商店区域
查看Mage_Catalog_Model_Product
- > setOrigData
public function setOrigData($key=null, $data=null)
{
if (Mage::app()->getStore()->isAdmin()) {
return parent::setOrigData($key, $data);
}
return $this;
}
保存产品时,需要将数据与origdata进行比较。
如果从“admin”区域运行,它可以检索origdata。如果您的脚本从“默认”区域运行,它将无法获取origdata。
因此,如果您处于开发人员模式,在某些代码点会出现一个会破坏您的脚本的警告(我可能错了,因为您说没有抛出错误)
您可以将Mage::app('default')
更改为Mage::app('admin')
来执行此操作
或使用Mage::app()->setCurrentStore('admin');