php用户禁用代码,php – 通过代码禁用Magento产品
发布日期:2022-02-18 13:19:53 浏览次数:9 分类:技术文章

本文共 3088 字,大约阅读时间需要 10 分钟。

你可以用

Mage::getModel('catalog/product_status')->updateProductStatus($product->getId(), $storeId, Mage_Catalog_Model_Product_Status::STATUS_DISABLED);

看起来像这样

Mage_Catalog_Model_Product_Status

/**

* Update status value for product

*

* @param int $productId

* @param int $storeId

* @param int $value

* @return Mage_Catalog_Model_Product_Status

*/

public function updateProductStatus($productId, $storeId, $value)

{

Mage::getSingleton('catalog/product_action')

->updateAttributes(array($productId), array('status' => $value), $storeId);

// add back compatibility event

$status = $this->_getResource()->getProductAttribute('status');

if ($status->isScopeWebsite()) {

$website = Mage::app()->getStore($storeId)->getWebsite();

$stores = $website->getStoreIds();

} else if ($status->isScopeStore()) {

$stores = array($storeId);

} else {

$stores = array_keys(Mage::app()->getStores());

}

foreach ($stores as $storeId) {

Mage::dispatchEvent('catalog_product_status_update', array(

'product_id' => $productId,

'store_id' => $storeId,

'status' => $value

));

}

return $this;

}

调度事件基于

sales/observer

catalogProductStatusUpdate

这是方法

Mage_Sales_Model_Observer

/**

* Catalog Mass Status update process

*

* @param Varien_Event_Observer $observer

* @return Mage_Sales_Model_Observer

*/

public function catalogProductStatusUpdate(Varien_Event_Observer $observer)

{

$status = $observer->getEvent()->getStatus();

if ($status == Mage_Catalog_Model_Product_Status::STATUS_ENABLED) {

return $this;

}

$productId = $observer->getEvent()->getProductId();

Mage::getResourceSingleton('sales/quote')->markQuotesRecollect($productId);

return $this;

}

这是资源模型

Mage_Catalog_Model_Resource_Product_Status

/**

* Update product status for store

*

* @param int $productId

* @param int $storId

* @param int $value

* @return Mage_Catalog_Model_Resource_Product_Status

*/

public function updateProductStatus($productId, $storeId, $value)

{

$statusAttributeId = $this->_getProductAttribute('status')->getId();

$statusEntityTypeId = $this->_getProductAttribute('status')->getEntityTypeId();

$statusTable = $this->_getProductAttribute('status')->getBackend()->getTable();

$refreshIndex = true;

$adapter = $this->_getWriteAdapter();

$data = new Varien_Object(array(

'entity_type_id' => $statusEntityTypeId,

'attribute_id' => $statusAttributeId,

'store_id' => $storeId,

'entity_id' => $productId,

'value' => $value

));

$data = $this->_prepareDataForTable($data, $statusTable);

$select = $adapter->select()

->from($statusTable)

->where('attribute_id = :attribute_id')

->where('store_id = :store_id')

->where('entity_id = :product_id');

$binds = array(

'attribute_id' => $statusAttributeId,

'store_id' => $storeId,

'product_id' => $productId

);

$row = $adapter->fetchRow($select);

if ($row) {

if ($row['value'] == $value) {

$refreshIndex = false;

} else {

$condition = array('value_id = ?' => $row['value_id']);

$adapter->update($statusTable, $data, $condition);

}

} else {

$adapter->insert($statusTable, $data);

}

if ($refreshIndex) {

$this->refreshEnabledIndex($productId, $storeId);

}

return $this;

}

没有观察者直接执行此函数,但在Status.php中调度了一个事件.

转载地址:https://blog.csdn.net/weixin_28926205/article/details/116215407 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:matlab训练样本如何设置,matlab_PCA,训练集与测试集分开,原理和用法
下一篇:php laravel session,laravel 基础教程 —— Session

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月11日 05时43分49秒