1

チェックアウト成功ページで小計額を取得しようとしています。これは、登録ユーザーに適しています。

$_order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());
$amount = $_order->getData('subtotal');
$total  = number_format($amount, 2);

ただし、注文がゲストによって処理される場合、$totalは空です。

何ができる?

PS:私はMagento1.6.1CEを使用しています

4

1 に答える 1

0

Magentoから取得app/code/core/Mage/Checkout/Block/Onepage.php

if (!$this->isCustomerLoggedIn()) {
    return $this->getQuote()->getShippingAddress();
} else {
    return Mage::getModel('sales/quote_address');
}

私はあなたが=)getOrder()でまったく同じことをすることができると99%確信していますMage_Checkout_Block_Success

注:isCustomerLoggedIn()メソッドは、Mage_Checkout_Block_Onepage_Abstractによって継承されない場所で定義されていMage_Checkout_Block_Successます。したがって、その実装を単純に使用できます。

public function isCustomerLoggedIn()
{
    return Mage::getSingleton('customer/session')->isLoggedIn();
}

たとえば、コードは次のようになります。

if (!Mage::getSingleton('customer/session')->isLoggedIn()) {
    $order = Mage::getSingleton('checkout/session')->getOrder();
} else {
    $order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());
}

前に意味のないことを言ってすみません...

于 2012-01-06T17:37:54.250 に答える