Как удалить шаги из проверки Magento Onepage?

18

Я использую CE 1.7 и в настоящее время пытаюсь удалить доставку, способ доставки и этапы оплаты из оформления заказа на одной странице. Я уже удалил шаги из local\mage\checkout\block\onepage\abstract.php. Моя проблема возникает, когда я пытаюсь перейти от платежной информации к просмотру, когда я нажимаю «Продолжить», она загружает изображение следующего шага, а затем останавливается. Любые идеи будут высоко оценены.

Egregory
источник
Поскольку я не могу комментировать (пока), пожалуйста, не могли бы вы рассказать нам и ответить на свой вопрос, что вы сделали (в OnepageController.php), чтобы пропустить платеж в CE 1.7. Благодарю.
heaven7
Привет @Egregory, есть еще информация о том, как ты это сделал? Я пытаюсь сделать то же самое!
Эдгар Кинтеро
@edgarQuintero код, который я использовал, представляет собой комбинацию утвержденного ответа и кода, который я представил. Это также может отличаться в более новых версиях, поскольку я делал это в CE 1.7
Egregory
@Egregory Да. Я переписал нижеприведенные функции, опубликованные Bijal Bhavsar, а также добавил ваши модификации OnepageController.php, очистил кеш и сеанс, чтобы быть уверенным, но все еще без изменений. Я тоже на 1.7.
Эдгар Кинтеро

Ответы:

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. Буду ли я создавать это в новом модуле или я просто создаю это в разделе app \ code \ local?
Egregory
Вы должны создать новый модуль и переписать файлы. Как переопределить файл блока? Вы можете просмотреть inchoo.net/ecommerce/magento/…
Биджал Бхавсар
Спасибо, я все выяснил, onepagecontroller.php повесил меня, как только я сделал правильные изменения и переписал, чтобы все начало работать.
Egregory
@Egregory Не могли бы вы поделиться своим onepagecontroller.php - как вы изменили его, чтобы начать работать. Благодарность!
Срджан
Он старый, но все же я попробовал с 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

snh_nl
источник
2

@ heaven7 Я изменил эти биты в OnepageController.php в целом, я сделал больше, чем просто манипулировал этим, но я перечислю свой код, чтобы вы могли видеть, что именно я изменил. Просто не забудьте сделать это только в локальной копии, а не в основной папке.

    `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));
        }
    }
Egregory
источник
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
Сообщения, содержащие только ссылки, имеют низкое качество для формата этого сайта. Пожалуйста, расширьте свой ответ.
Филвинкл
Я благодарен за ответ, но они фокусируются больше на CE 1.6, чем на 1.7. Есть некоторые различия в том, где такие вещи, как пошаговые коды в 1.7, находятся в файле Abstract.php.
Egregory