以编程方式修改magento中的相关产品
Programmatically modify related products in magento
我正在尝试以编程方式操纵 Magento 商店中的产品关系。
根据我的阅读,setRelatedLinkData 应该是正确的选择。
作为我的简单测试,我只是试图用任何东西(即空数组)替换与产品相关的产品,但是它不起作用 - 有问题的产品仍在后端显示相关产品。
我正在使用的测试代码是:
$product = Mage::getModel('catalog/product')->load($product->getId());
$linkData = array();
print_r($linkData);
$product->setRelatedLinkData($linkData);
echo "Save\n";
$r = $product->save();
如上所述,但是当我在后端重新加载该产品时,该产品仍然有相关产品。
注意:我不仅想删除相关产品,最终我还希望能够添加新产品,所以 DELTE FROM... SQL 查询不是我的意思寻找。但是,如果我无法使用它来删除产品,那么添加它们肯定也行不通,所以一步一个脚印:-)
我能想到的最快方法是使用 Link 资源:
app/code/core/Mage/Catalog/Model/Resource/Product/Link.php saveProductLinks
// sample code
$product = Mage::getModel('catalog/product')->load(147);
$linkData = array();
Mage::getResourceModel('catalog/product_link')->saveProductLinks(
$product, $linkData, Mage_Catalog_Model_Product_Link::LINK_TYPE_RELATED
);
如果您想分配产品,请使用相同的代码,但将其提供为 $linkData:
$linkData = array(
'145' => array('position' => 1),
'146' => array('position' => 2)
);
我正在尝试以编程方式操纵 Magento 商店中的产品关系。
根据我的阅读,setRelatedLinkData 应该是正确的选择。
作为我的简单测试,我只是试图用任何东西(即空数组)替换与产品相关的产品,但是它不起作用 - 有问题的产品仍在后端显示相关产品。
我正在使用的测试代码是:
$product = Mage::getModel('catalog/product')->load($product->getId());
$linkData = array();
print_r($linkData);
$product->setRelatedLinkData($linkData);
echo "Save\n";
$r = $product->save();
如上所述,但是当我在后端重新加载该产品时,该产品仍然有相关产品。
注意:我不仅想删除相关产品,最终我还希望能够添加新产品,所以 DELTE FROM... SQL 查询不是我的意思寻找。但是,如果我无法使用它来删除产品,那么添加它们肯定也行不通,所以一步一个脚印:-)
我能想到的最快方法是使用 Link 资源:
app/code/core/Mage/Catalog/Model/Resource/Product/Link.php saveProductLinks
// sample code
$product = Mage::getModel('catalog/product')->load(147);
$linkData = array();
Mage::getResourceModel('catalog/product_link')->saveProductLinks(
$product, $linkData, Mage_Catalog_Model_Product_Link::LINK_TYPE_RELATED
);
如果您想分配产品,请使用相同的代码,但将其提供为 $linkData:
$linkData = array(
'145' => array('position' => 1),
'146' => array('position' => 2)
);