Php 如何以编程方式将新产品分配到默认类别?
自 返回我写的Php 如何以编程方式将新产品分配到默认类别?,php,magento,Php,Magento,自 返回我写的'2' Mage::app()->getWebsite(true)->getDefaultStore()->getRootCategoryId(); 但它不会更改产品的类别-在类别选项卡中,复选框“默认类别”没有勾选。假设您有一个名为$product的产品和一个名为$category\u ID的类别ID 您可以通过执行以下操作将其归入一个类别 $productCatalog = Mage::getModel('catalog/product')->load
'2'
Mage::app()->getWebsite(true)->getDefaultStore()->getRootCategoryId();
但它不会更改产品的类别-在类别选项卡中,复选框“默认类别”没有勾选。假设您有一个名为$product的产品和一个名为$category\u ID的类别ID 您可以通过执行以下操作将其归入一个类别
$productCatalog = Mage::getModel('catalog/product')->load($product->getId());
$productCatalog->setCategoryIds('2')->save();
我认为问题在于,您将category id包含在一个报价中。该方法需要一个整数数组作为其参数。所以试试这个
$product->setCategoryIds(array($category_id));
$product->save();
$productCatalog->setCategoryIds(数组(2))代码>不会改变任何东西它应该可以工作。因为我已经在我的magento环境中测试了它$product=$observer->getEvent()->getProduct()
你确定你的productCatalog
保存了一个产品吗?当然,var\u dump($productCatalog)
会重新保存一个巨大的对象(Mage\u Catalog\u Model\u product)
这几乎会杀死我的浏览器,试试var\u dump(productCatalog->getCategoryIds())
看看它是否保存了任何数据?
$category_id = Mage::app()->getWebsite(true)->getDefaultStore()->getRootCategoryId();
$productCatalog = Mage::getModel('catalog/product')->load($product->getId());
$productCatalog->setCategoryIds(array($category_id));
$productCatalog->save();