Reputation: 51
I want to disable product programmatically for all store view. Please help me
I tried with the following... but no luck
$storeId = 0;
Mage::getModel('catalog/product_status')->updateProductStatus($product_id, $storeId, Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
Upvotes: 2
Views: 12575
Reputation: 1235
There's a much shorter way than in the answer of Keyur Shah:
foreach (Mage::app()->getStores() as $store) {
Mage::getModel('catalog/product_status')->updateProductStatus($productId, $store->getId(), Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
}
Upvotes: 1
Reputation: 3554
By default the scope of status attribute is set to store , if we will set it to global under manage attributes , than we can update status for all store views with below code.
$loadproduct = Mage::getModel("catalog/product")->load("product_id");
$loadproduct->setStatus(2);
$loadproduct->save();
thanks
Upvotes: 1
Reputation: 11533
Firstly $storeId=0
is default store id for admin if you want disable product for all store view then you can set $storeId=Mage:app()->getStoreId()
// this is for current store id
after that you can disable all product
$product_id=1;
$storeId=Mage::app()->getStoreId();
Mage::getModel('catalog/product_status')->updateProductStatus($product_id, $storeId, Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
EDIT
This is for all store view i think this is the dirty way to achieve this
<?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);
}
?>
Let me know if you have any query
Upvotes: 4