これをアフィリエイト追跡に使用できるように、success.phtmlページでMagentoの注文増分IDを取得しようとしています。
次のコードを使用していますが、2行目にエラーが発生しています。
$order = Mage::getSingleton('sales/order')->getLastOrderId();
$lastOrderId = $order->getIncrementId();
エラーは次のとおりです。
致命的なエラー:34行目の非オブジェクトに対するメンバー関数getIncrementId()の呼び出し:$ LastOrderId = $ order-> getIncrementId();
Order Increment Idを取得する方法について何かアイデアはありませんか?これは、管理者に表示される参照番号で、通常は次のようなものです。#1000123
チェックアウト成功ページ(success.phtml内)でこれを具体的に実行している場合、注文インクリメントIDを取得するコードは、顧客に表示されるため、テンプレートですでに使用可能です。
次のものが必要です。
$orderId = $this->getOrderId();
これは他のページでは機能しないことに注意してください。そのため、これらを使用する必要があります。
$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
コード内の$ orderは、関数名が示すように、最後の注文IDです。これが必要な値でない場合は、それを使用して注文をロードし、その上でゲッターを使用します。
$order = Mage::getModel('sales/order');
$order->load(Mage::getSingleton('sales/order')->getLastOrderId());
$lastOrderId = $order->getIncrementId();
これは完璧に機能します。これをモジュールで実行しています。
$last_order_increment_id = Mage::getModel("sales/order")->getCollection()->getLastItem()->getIncrementId();
ありがとうございます。 :)
への電話
Mage::getSingleton('sales/order')
オブジェクトを返していません。試す
var_dump(Mage::getSingleton('sales/order'));
確認するために。
最近、チェックアウトコードについて詳しく説明していませんが、sales/order
は進行中の注文を取得します。注文が完了すると、進行しなくなります。
これを行う「正しい」方法は、チェックアウト中にMagentoが起動するイベントの1つにオブザーバーを作成することです。の
checkout_onepage_controller_success_action
チェックアウトプロセスをあまりカスタマイズしていなければ、イベントで十分です。
the Wiki でこれを行う方法の簡潔な説明があります(別のイベントの場合)
イベントのセットアップと応答を取得したら、
$event = $observer->getEvent();
var_dump($event->getData());
入手できる情報の種類を確認します。おそらく、そこに注文IDがあり、目的のIDを取得できます。
私は使用しなければなりませんでした...
$_order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());
Success.phtmlテンプレート内。 load()の代わりに、loadByIncrementIdを使用しました。その後、注文オブジェクトが空でなくなりました。
管理モードの場合-これを試してください:
$orderModel = Mage::getModel('sales/order'); $orders = $orderModel->getCollection()->setOrder('increment_id', 'DESC')->setPageSize(1)->setCurPage(1); $orderId = $orders->getFirstItem()->getIncrementId();
getRealOrderId()
は、データグリッドに表示される注文番号を返すようです。 getId()
は、データベースの行の内部IDを返しますが、これはおそらく必要ありません。
次のコードスニペットを使用して、増分IDを取得できます。
$orderId = 12;
$order = Mage::getModel('sales/order')->load($orderId);
$Incrementid = $order->getIncrementId();
これで、$ Incrementid変数にエコーして、インクリメントIDを確認できます。
これがお役に立てば幸いです。
$lastOrderIncrementId = Mage::getModel("sales/order")->getCollection()->getLastItem()->getIncrementId();