วิธีลบขั้นตอนจากการชำระเงินของ Magento Onepage


18

ฉันใช้ CE 1.7 และขณะนี้ฉันกำลังพยายามลบการจัดส่งวิธีการจัดส่งและขั้นตอนการชำระเงินจากการชำระเงิน Onepage ฉันลบขั้นตอนออกlocal\mage\checkout\block\onepage\abstract.phpไปแล้ว ปัญหาของฉันมาเมื่อพยายามที่จะดำเนินการจากข้อมูลการเรียกเก็บเงินเพื่อตรวจสอบเมื่อฉันคลิกดำเนินการต่อมันโหลดภาพขั้นตอนถัดไปโหลดกว่าที่ยังคงอยู่ ความคิดใด ๆ ที่จะได้รับการชื่นชมมาก


เนื่องจากฉันไม่สามารถแสดงความคิดเห็น (ยัง) โปรดคุณสามารถบอกเราและตอบคำถามของคุณสิ่งที่คุณทำ (ใน OnepageController.php) เพื่อข้ามการชำระเงินใน CE 1.7 ขอบคุณ
สวรรค์ 7

สวัสดี @Educory ข้อมูลเพิ่มเติมเกี่ยวกับวิธีการที่คุณทำเช่นนี้? ฉันพยายามทำเช่นเดียวกัน!
Edgar Quintero

@edgarQuintero รหัสที่ฉันใช้คือการรวมกันของคำตอบที่ได้รับการอนุมัติและรหัสที่ฉันส่งมา มันอาจจะแตกต่างกันไปในเวอร์ชั่นที่ใหม่กว่าขณะที่ฉันทำสิ่งนี้ใน CE 1.7
Egregory

@Educory ใช่ฉันเขียนใหม่ฟังก์ชั่นด้านล่างโพสต์โดย Bijal Bhavsar และยังเพิ่มการแก้ไข OnepageController.php ของคุณล้างแคชและเซสชั่นเพียงเพื่อให้แน่ใจ แต่ก็ยังไม่มีการเปลี่ยนแปลง ฉันอายุ 1.7 ปีด้วย
Edgar Quintero

คำตอบ:


13

ลองเขียนไฟล์บล็อกด้านล่างด้วยฟังก์ชั่นต่อไปนี้:

เขียนซ้ำชั้น Mage_Checkout_Block_Onepage_Billing

    public function canShip()
    {
        return false;
    }

เขียนซ้ำชั้น Mage_Checkout_Block_Onepage_Shipping_Method

    public function isShow()
    {
        return false;
    }

เขียนซ้ำชั้น Mage_Checkout_Block_Onepage_Shipping

    public function isShow()
    {
          return false;
    }

ฉันหวังว่าตอนนี้ปัญหาที่เกี่ยวข้องกับความคืบหน้าจะไม่เกิดขึ้น


ฉันยังคงเรียนรู้ความสามารถในการเขียนซ้ำของ Magento ฉันจะสร้างสิ่งนี้ในโมดูลใหม่หรือไม่ฉันจะสร้างสิ่งนี้ในส่วน \ code \ local หรือไม่
Egregory

คุณต้องสร้างโมดูลใหม่และเขียนไฟล์ใหม่ จะเขียนทับไฟล์บล็อกได้อย่างไร? คุณสามารถตรวจสอบinchoo.net/ecommerce/magento/ …
Bijal Bhavsar

ขอบคุณฉันได้ทุกสิ่งที่คิดออกมา onepagecontroller.php ก็ห้อยฉันไว้เมื่อฉันทำการเปลี่ยนแปลงที่ถูกต้องและทำการเขียนใหม่สำหรับทุกสิ่งที่เริ่มทำงาน
Egregory

@Egregory คุณช่วยแบ่งปัน onepagecontroller.php ของคุณได้อย่างไร - คุณเปลี่ยนมันเป็นอย่างไรเมื่อเริ่มทำงาน ขอบคุณ!
srdan

มันเก่า แต่ก็ยังลองกับ Magento 1.9.2 และมันไม่ทำงาน
Altaf Hussain

4

เก่าไปหน่อย แต่ดูที่นี่:

ลบการเข้าสู่ระบบ http://excellencemagentoblog.com/magento-onestep-checkout-remove-login-step

การชำระเงินการจัดส่งสินค้า + ลบ http://excellencemagentoblog.com/magento-onestep-checkout-remove-payment-and-shipping-method-step

ลบการชำระเงิน http://excellencemagentoblog.com/magento-onestep-checkout-remove-payment-method-step

ลบการจัดส่งสินค้า http://excellencemagentoblog.com/magento-onestep-checkout-remove-shipping-method-step

เพิ่มขั้นตอน http://excellencemagentoblog.com/magento-onestep-checkout-add-step


2

@ heaven7 ฉันเปลี่ยนบิตเหล่านี้โดยรวม OnepageController.php ฉันทำมากกว่านี้ แต่ฉันจะทำรายการรหัสของฉันเพื่อให้คุณสามารถเห็นสิ่งที่ฉันเปลี่ยนไปอย่างแน่นอน เพียงจำไว้ว่าให้ทำในสำเนาโลคัลเท่านั้นไม่ใช่ในโฟลเดอร์ core

    `protected $_sectionUpdateFunctions = array(
           /* 'payment-method'  => '_getPaymentMethodsHtml',
            'shipping-method' => '_getShippingMethodsHtml',*/
            'review'          => '_getReviewHtml',
        );    public function saveBillingAction()
        {
           if ($this->_expireAjax()){
            return;
        }
            if ($this->getRequest()->isPost()) {
                $data = $this->getRequest()->getPost('billing', array());
                $customerAddressId =  $this->getRequest()->getPost('billing_address_id', false);
                $result = $this->getOnepage()->saveBilling($data, $customerAddressId);

    //            if (!isset($result['error'])) {
    //                if ($this->getOnepage()->getQuote()->isVirtual()) {
                        $this->loadLayout('checkout_onepage_review');
                        $result['goto_section'] = 'review';
                        $result['update_section'] = array(
                            'name' => 'review',
                            'html' => $this->_getReviewHtml()
                        );
                    }
                    /*elseif (isset($data['use_for_shipping']) && $data['use_for_shipping'] == 1) {
                        $this->saveShippingMethodAction();
                        $this->loadLayout('checkout_onepage_review');
                        $result['goto_section'] = 'review';
                        $result['update_section'] = array(
                            'name' => 'review',
                            'html' => $this->_getReviewHtml()
                        );

                        $result['allow_sections'] = array('shipping','review');
                        $result['duplicateBillingInfo'] = 'true';
                    }*/
                   /* else {
                        //$result['goto_section'] = 'shipping';
                        //TODO There is an error with loading the layout of the Review tab.
                        $result['goto_section'] = 'review';
                    }*/
               // }

                $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));

            }     
     public function saveShippingAction()
    {

       if($this->_expireAjax()){
           return;
       }
        if ($this->getRequest()->isPost()) {
            $data = $this->getRequest()->getPost('shipping', array());
            $customerAddressId = $this->getRequest()->getPost('shipping_address_id', false);
            $result = $this->getOnepage()->saveShipping($data, $customerAddressId);

            if (!isset($result['error'])) {
                $this->saveShippingMethodAction();
                $this->loadLayout('checkout_onepage_review');
                $result['goto_section'] = 'review';
                $result['update_section'] = array(
                    'name' => 'review',
                    'html' => $this->_getReviewHtml()
                );
            }
            $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
        }
    }

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));

                $result['goto_section'] = 'review';
                $result['update_section'] = array(
                    'name' => 'review',
                    'html' => $this->_getReviewHtml()
                );
            }
            $this->getOnepage()->getQuote()->collectTotals()->save();
            $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
        }
    }

1

โปรดไปที่ลิงค์นี้

http://sapnandu-magento.blogspot.in/2012/04/magento-onestep-checkout-remove.html

หรือ

http://knowledgevalley.blogspot.in/2012/01/magento-skip-shipping-method-from.html

มันอาจช่วยคุณได้


1
ลิงก์เฉพาะโพสต์มีคุณภาพไม่ดีสำหรับรูปแบบของไซต์นี้ โปรดขยายคำตอบของคุณ
philwinkle

ฉันขอขอบคุณการตอบสนอง แต่สิ่งเหล่านี้มุ่งเน้นไปที่ ce 1.6 มากกว่า 1.7 มีความแตกต่างบางประการที่สิ่งต่าง ๆ อยู่เช่นรหัสขั้นตอนใน 1.7 อยู่ในไฟล์ Abstract.php
Egregory
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.