编辑:
“肮脏的黑客”解决方案:
在billing.phtml
尚未下订单时,客户可以退后一步并退出购物。插入逻辑不是好点。相反,请使用checkout/success.phtml
hack 模板。您可以在那里执行以下操作:
<?php
$order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());
Mage::log($order->getCustomerEmail());
Mage::log($order->getCustomerFirstname());
Mage::log($order->getCustomerLastname());
foreach ($order->getAllVisibleItems() as $item) {
Mage::log($item->getSku());
};
?>
就是这样,您拥有实现自定义逻辑的所有数据。
推荐的解决方案从这里开始:
据我了解,您必须将订购产品的名称或 SKU 通过客户的电子邮件发送给外部客户。Magento 有一个事件驱动的架构,所以在这样的问题中,最好创建一个观察者来捕获事件。(链接到“如何创建观察者”)您的案例中的事件是“sales_order_place_after”。为此,您需要在模块的配置中,例如。应用程序/代码/本地/您的/模块/etc/config.xml:
<events>
<sales_order_place_after>
<observers>
<any_unique_name_of_your_observer>
<type>singleton</type>
<class>yourclass/observer</class>
<method>sendOrderInfo</method>
</any_unique_name_of_your_observer>
</observers>
</sales_order_place_after>
</events>
在你的 Observer 中,它是 app/code/local/YOUR/MODULE/Model/Observer.php:
class YOUR_MODULE_Model_Observer extends Mage_Core_Model_Observer
{
public function sendOrderInfo($observer)
{
#get the order
$order = $observer->getEvent()->getOrder();
Mage::log($order->getBillingAddress());
Mage::log($order->getShippingAddress())
Mage::log($order->getCustomerEmail());
Mage::log($order->getCustomerFirstname());
Mage::log($order->getCustomerLastname());
foreach ($order->getAllVisibleItems() as $item) {
$sku = $item->getSku();
...
这是一个如何检索所需数据的示例,然后您可以在 Observer 的方法中实现您的自定义逻辑。
编辑:获取sku
订购商品的更详细示例