Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何以编程方式禁用Magento中所有商店视图的产品?_Magento - Fatal编程技术网

如何以编程方式禁用Magento中所有商店视图的产品?

如何以编程方式禁用Magento中所有商店视图的产品?,magento,Magento,我想以编程方式禁用所有商店视图的产品。请帮帮我 我试着用下面的。。。但是没有运气 $storeId = 0; Mage::getModel('catalog/product_status')->updateProductStatus($product_id, $storeId, Mage_Catalog_Model_Product_Status::STATUS_DISABLED); 首先,$storeId=0是管理员的默认存储

我想以编程方式禁用所有商店视图的产品。请帮帮我

我试着用下面的。。。但是没有运气

$storeId = 0;                               
Mage::getModel('catalog/product_status')->updateProductStatus($product_id, $storeId, Mage_Catalog_Model_Product_Status::STATUS_DISABLED);

首先,
$storeId=0
是管理员的默认存储id。如果要禁用所有存储视图的产品,则可以设置
$storeId=Mage:app()->getStoreId()
//这是用于当前存储id

之后,您可以禁用所有产品

$product_id=1;
$storeId=Mage::app()->getStoreId();
Mage::getModel('catalog/product_status')->updateProductStatus($product_id, $storeId, Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
编辑

这是所有商店的看法,我认为这是肮脏的方式来实现这一点



如果您有任何查询

请告诉我,默认情况下,状态范围属性设置为存储,如果我们在“管理属性”下将其设置为全局,那么我们可以使用以下代码更新所有存储视图的状态

$loadproduct = Mage::getModel("catalog/product")->load("product_id");
            $loadproduct->setStatus(2); 
            $loadproduct->save();

谢谢

有一个比凯乌尔·沙阿的回答要短得多的方法:

foreach (Mage::app()->getStores() as $store) {
    Mage::getModel('catalog/product_status')->updateProductStatus($productId, $store->getId(), Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
}

很抱歉耽搁了你的时间。它实际上工作得很好。但我还有一个问题,与上述问题有关。我的问题是-如何以编程方式仅为管理员视图或默认视图禁用产品?获取所有存储ID的方式非常奇怪-您只需迭代getStores()的结果,就可以获得存储对象列表。因此,不需要像这样收集您的商店ID,然后运行第二个循环。对于这样一个简单的任务,有很多代码(请参阅我的答案以获得更简短的版本)。您不应仅为更新单个属性而加载产品-当您拥有大量产品时,这会导致性能问题。@MatthiasKleine Kleine好的,请提供您的解决方案。通常,您应始终使用eav实体的资源模型来更新单个属性。对于产品状态,我刚刚发布了我的解决方案,但是当您想要更新另一个产品属性时,您可以这样做:Mage::getSingleton('catalog/product_action')->updateAttributes(数组($productId),数组('status'=>$value),$storeId);
foreach (Mage::app()->getStores() as $store) {
    Mage::getModel('catalog/product_status')->updateProductStatus($productId, $store->getId(), Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
}