【发布时间】:2016-09-05 12:30:53
【问题描述】:
我制作了一个简单的导入脚本,并尝试以编程方式保存 3 个自定义属性(att1、att2、att3)以及所有其他信息(名称、描述、价格、类别..)。
所以基本上我有:
public function insert_product($data) {
$product = Mage::getModel('catalog/product');
try {
$sku = $data['code'];
if ($this->prodottiImportati[$sku]) {
$sku = $data['code'] . '-1';
}
$this->prodottiImportati[$sku] = true;
$product->setSku($sku);
$product->setName($data['name']);
$product->setDescription($data['desc']);
$product->setShortDescription($data['short_desc']);
$product->setManufacturer('');
$product->setPrice($data['price']);
$product->setTypeId('simple');
$product->setAttributeSetId($this->attributeSet);
$categorie = $this->get_categories($data);
$product->setCategoryIds($categorie);
$product->setWeight($data['peso']);
$product->setTaxClassId(2); // taxable goods
$product->setVisibility(4); // catalog, search
$product->setStatus(1); // enabled
$product->setWebsiteIds($data['store_id']);
$stockData = $product->getStockData();
$stockData['qty'] = $data['qty'];
if ($data['quantita'] > 0) {
$stockData['is_in_stock'] = 1;
} else {
$stockData['is_in_stock'] = 0;
}
$stockData['manage_stock'] = 1;
$stockData['use_config_manage_stock'] = 0;
$product->setStockData($stockData);
$product->setIsMassupdate(true)->setExcludeUrlRewrite(true);
$product->save();
$productID = $product->getId();
} catch(Exception $e) {
echo ($e->getMessage());
}
return $productID;
}
我尝试的第一件事是添加一个
$productID = $this->insert_product($data);
Mage::getSingleton('catalog/product_action')->updateAttributes(
array($productID), array(
'att1' => $data['att1'],
), $data['store_id']);
所以基本上在调用插入函数后更新内容,使用插入后获得的 ID。 store_id 是该给定语言的商店的 ID。没有保存任何东西。
第二次尝试,我跟着这个:Magento add custom options with programmatically importing products 我在 insert_product 函数内以及在 $productID = $this->insert_product($data); 之后尝试了这一点都没有用。
最后我尝试了一个神奇的 $product->setAtt1('value');在 insert_product 函数中,不确定 Magento 将如何理解如何以这种方式设置 att1,但是......你知道,我在某处读过它并试了一下;)
att1、att2 和 att3 拼写为小写,尽管它们有一个大写标签(认为这里没有关系),它们是属性组的一部分(我通过 $product->setAttributeSetId($this ->setAttributi)) 并且它们都是多选属性,所以我理论上可以将多个值传递给它们。
我确定我在途中遗漏了一些东西。有人可以帮忙吗?
【问题讨论】: