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

时间:2014-05-03 13:30:47

标签: magento

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

我尝试了以下......但没有运气

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

3 个答案:

答案 0 :(得分:4)

首先$storeId=0是admin的默认商店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);

修改

这适用于所有商店视图我认为这是实现此目的的肮脏方式

<?php
    $allStores = Mage::app()->getStores();
    foreach ($allStores as $_eachStoreId => $val)
    {
        $_storeId[] = Mage::app()->getStore($_eachStoreId)->getId();
    }
    for($i=0;$i<count($_storeId);$i++)
    {
        $product_id=1;
        $storeId=$_storeId[$i];
        Mage::getModel('catalog/product_status')->updateProductStatus($product_id, $storeId, Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
    }
?> 

如果您有任何疑问,请告诉我

答案 1 :(得分:1)

比Keyur Shah的回答要短得多:

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

答案 2 :(得分:-1)

默认情况下,状态 属性范围设置为商店,如果我们将其设置为全局在管理属性下,我们可以使用以下代码更新所有商店视图的状态。

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

感谢