1

私のmagentoサイトには、価格が0.00の製品があります。

そのため、商品をチェックアウトするときに支払い情報を非表示にします。

つまり、コードを変更しましたapp/code/core/Mage/Checkout/Block/Onepage/Abstract.php

この関数で _getStepCodes()

コードを次のように置き換えます。

$sub = Mage::getSingleton('checkout/cart')->getQuote()->getData();
        $subtotal = $sub['base_subtotal'];
        if($subtotal == 0){
            return array('login', 'billing', 'shipping', 'shipping_method', 'review');
        }else{
            return array('login', 'billing', 'shipping', 'shipping_method', 'payment', 'review');
        }

は表示Payment Informationされません。

次に、ここでやりたいことは次のとおりです。

商品の合計金額がゼロの場合は、 をOrder Reviewクリックしてから に進みShipping methodsます。

製品価格がゼロでない場合はPayment Information、通常どおり取得します。

というわけでコードを書いていきますapp/code/core/Mage/Checkout/controllers/OnepageController.php

このページでは、関数を変更し、これを更新しました:

public function saveShippingMethodAction()
{
    if ($this->_expireAjax()) {
        return;
    }
    if ($this->getRequest()->isPost()) {
        $data = $this->getRequest()->getPost('shipping_method', '');
        $result = $this->getOnepage()->saveShippingMethod($data);
        /*
        $result will have erro data if shipping method is empty
        */
        if(!$result) {
            Mage::dispatchEvent('checkout_controller_onepage_save_shipping_method',
                    array('request'=>$this->getRequest(),
                        'quote'=>$this->getOnepage()->getQuote()));
            $this->getOnepage()->getQuote()->collectTotals();
            $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
            $sub = Mage::getSingleton('checkout/cart')->getQuote()->getData();
            $subtotal = $sub['base_subtotal'];
            if($subtotal == 0){
                 $this->loadLayout('checkout_onepage_review');
                $result['goto_section'] = 'review';
                $result['update_section'] = array(
                    'name' => 'review',
                    'html' => $this->_getReviewHtml()
                );
            }else{
                $result['goto_section'] = 'payment';
                $result['update_section'] = array(
                    'name' => 'payment-method',
                    'html' => $this->_getPaymentMethodsHtml()
                );
        }
        $this->getOnepage()->getQuote()->collectTotals()->save();
        $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
    }
}

}

製品価格がゼロより大きい場合、正しく機能しています。

ただし、製品価格がゼロの場合は、ステップ に進みませんOrder Review

しかし、fre バグにはjsonのコードがありOrder Reviewます。

その中で何が問題なのですか?

jsonのコードをロードしOrder Reviewましfire bugたが、サイトにはロードされませんでした。

どうすればこれを解決できますか?

4

0 に答える 0