我们一直在使用第三方来打包和运送我们的包裹。因此,我们看不到所有通过的订单了。
但我们必须手动提供多种产品,例如数字礼品卡。有没有可能让Magento在客户订购特定SKU时向我们发送电子邮件?例如,告知我们需要为客户创建礼品卡?
我不希望看到我们的电子邮箱中的每个订单,只是包含一些特定的SKU。
谢谢, 门诺
答案 0 :(得分:1)
是的,这可以通过自定义模块实现。创建模块并向其添加事件观察器的config.xml;
<events>
<checkout_onepage_controller_success_action>
<observers>
<copymein>
<type>singleton</type>
<class>dispatcher/observer</class>
<method>ccMyEmail</method>
</copymein>
</observers>
</checkout_onepage_controller_success_action>
</events>
然后在Model / Observer.php中声明你的函数;
public function ccMyEmai($observer) {
$order_ids = $observer->getData('order_ids');
if(isset($order_ids)) {
foreach ($order_ids as $order_id) :
$sendToMe = false;
$order = Mage::getModel('sales/order')->load($order_id);
if (isset($order)) {
$orderItems = $order->getAllItems();
foreach ($orderItems as $_item) {
$product = Mage::getModel('catalog/product')->load($item->getData('product_id'));
if($product->getSku() == ('123' || '234' || '345')) { // Your SKUs
$sendToMe = true;
}
}
}
if($sendToMe) {
$mail = Mage::getModel('core/email');
$mail->setToName('Your name');
$mail->setToEmail('your@email.com');
$mail->setBody('Order number '.$order->getIncrementId().' has items that need action');
$mail->setSubject('Order '.$order->getIncrementId().' needs attention');
$mail->setFromName('Your from name');
$mail->setFromEmail('your@siteemail.com');
$mail->setType('text');
try {
$mail->send();
} catch (Exception $e) {
Mage::log($e);
}
}
endforeach;
}
}
请注意,创建一个在前端不可见的产品属性更有效,该产品属性定义产品是否需要您的注意 - 有点像需要注意是/否,然后扫描订购的产品是否该属性中的值。比你正在寻找的SKU硬编码更容易管理;)
答案 1 :(得分:1)
您可以为此功能创建自定义模块。因此,在新模块中,您必须挂钩Observer事件:checkout_onepage_controller_success_action。 你可以这样做:
<checkout_onepage_controller_success_action>
<observers>
<xxx_checkout_success>
<type>singleton</type>
<class>[Your Module Name]/observer</class>
<method>sendEmailToCustomerForSales</method>
</xxx_checkout_success>
</observers>
</checkout_onepage_controller_success_action>
并且,在此sendEmailToCustomerForSales()方法中,它可以根据特定SKU向客户发送电子邮件。
请参阅此代码:
public function sendEmailToCustomerForSales($observer) {
$orderId = (int)current($observer->getEvent()->getOrderIds());
$order = Mage::getModel('sales/order')->load($orderId);
$itemCollection = $order->getItemsCollection();
foreach($itemCollection as $item) {
$_product = Mage::getModel('catalog/product')->load($item->getProductId());
if($_product->getSku() == '[Your specific sku]') {
/*send an email to the customer*/
}
}
}