我正在尝试在Magento 1.8中以编程方式创建产品,然后为其设置一些属性值。到目前为止,每个工作都在工作,属性正在使用“默认”范围内的产品正确保存。
问题是我的商店有两个不同的“商店视图”,一个是英文,一个是法文。我无法想象如何为特定属性的数据设置“范围”或“存储视图”。
如何告诉Magento保存特定范围的属性值?
以下是使用“简短描述”属性的代码示例:
$product = new Mage_Catalog_Model_Product();
$product->setSku($sku);
$product->setAttributeSetId($attributeSetId);
$product->setTypeId($typeId);
$product->setName($sku);
$product->setWebsiteIDs(array($websiteId));
$product->setShortDescription('Short description in english');
$product->setShortDescription('Short description in french'); // Scope change here?
答案 0 :(得分:14)
创建产品后,它应该有一个id
这是更新特定商店视图的产品名称和简短描述的快速方法,无需调用耗尽资源的save
方法。
假设产品ID为10,商店视图ID为2
运行这个:
$productId = 10;
$storeId = 2;
$newName = 'Nom de produit';
$newShortDescription = 'description de produit';
Mage::getSingleton('catalog/product_action')->updateAttributes(
array($productId),
array('name'=>$newName, 'short_description' => $newShortDescription),
$storeId
);
答案 1 :(得分:2)
为特定商店视图添加此内容
$product->setStoreId($storeId);
答案 2 :(得分:1)
用于默认商店视图
$product = new Mage_Catalog_Model_Product();
$product->setSku($sku);
$product->setAttributeSetId($attributeSetId);
$product->setTypeId($typeId);
$product->setName($sku);
$product->setWebsiteIDs(array($websiteId));
$product->setShortDescription('Short description in english');
$product->setStoreId(array(0));
答案 3 :(得分:0)
$store_id = Mage::app()->getStore()->getStoreId();
$product = Mage::getModel('catalog/product')->setStoreId($store_id);
$brandLabel = $product->setData('brand','adidas')->getResource()->saveAttribute($product, 'brand');
答案 4 :(得分:0)
<?php $StoreId = Mage::app()->getStore()->getId();
$product = Mage::getModel('catalog/product')->setStoreId($StoreId);
$brandLabel = $product->setData('brand','adidas')->getResource()->saveAttribute($product, 'brand'); ?>