Php 如何更改产品销售时的给定属性?(订单完成时)
我需要更改一个属性,当产品售出时,当订单完成时,我想我可以在某个地方挂上某个东西,但我不知道在哪里/什么地方Php 如何更改产品销售时的给定属性?(订单完成时),php,events,zend-framework,magento,attributes,Php,Events,Zend Framework,Magento,Attributes,我需要更改一个属性,当产品售出时,当订单完成时,我想我可以在某个地方挂上某个东西,但我不知道在哪里/什么地方 谢谢。试着在之后连接到销售\订单\地点。这是一个关于如何捕捉Magento事件的好教程。如果您的问题被问及“Magento方式”,当您说“订单已完成”时,这意味着其状态为“完成”。已在前端站点上订购状态为“完成”的订单,然后从管理员处开具发票和发货 我的答案是基于这个术语的,因此在订单完成后(同样,以magento的方式)为您提供了更改产品属性的线索 为您编写完整的代码不是很好的帮助,而
谢谢。试着在之后连接到销售\订单\地点。这是一个关于如何捕捉Magento事件的好教程。如果您的问题被问及“Magento方式”,当您说“订单已完成”时,这意味着其状态为“完成”。已在前端站点上订购状态为“完成”的订单,然后从管理员处开具发票和发货 我的答案是基于这个术语的,因此在订单完成后(同样,以magento的方式)为您提供了更改产品属性的线索 为您编写完整的代码不是很好的帮助,而且很长,因此以下是路径(在我看来):)
- 创建一个模块 (谷歌是你的朋友)
- 将观察者附加到此模块,并使其观察“销售\订单\保存\之后”事件 (谷歌是你的朋友)
- 在observer文件/方法中,检索订单及其状态
$order = $observer->getEvent()->getOrder(); $orderStatus = $order->getStatus();
- 如果订单状态为“已完成”,则创建一个foreach,用于更新所有项目所需的属性
if ($orderStatus == 'complete') {
$items = $order->getAllItems();
foreach ($items as $item) {
$productsToUpdate[] = $item->getProductId();
}
$theAttributeToUpdate = 'name';
$theAttributeValue = 'Sold Product';
Mage::getSingleton('catalog/product_action')->updateAttributes($productsToUpdate, array($theAttributeToUpdate => $theAttributeValue), 0);
}
这应该足以让你走上正轨。oooooooh~ahhhh鬼代码!!我看不见!!!最后,我采用了一种稍微不同的方法,并钩住了以下事件:签出(onepage |多芯片)_控制器_成功_操作。谢谢你,好的!因此,您需要在订单放在前端时更改属性,而不是在后端“完成”时:)很高兴我能提供帮助。是的,我需要在产品售出时更改特殊状态,无论它是“完成”还是“否”。