編集:
「汚いハック」ソリューション:
billing.phtml
注文がまだ行われていない場合、顧客は一歩下がって買い物をやめることができます。ロジックを挿入するのは良い点ではありません。代わりにcheckout/success.phtml
、ハック用のテンプレートを使用してください。そこでは次のことができます。
<?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>
app/code/local/YOUR/MODULE/Model/Observer.php にある Observer の場合:
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
EDIT:注文されたアイテムを取得するためのより詳細な例