Jak usunąć kroki z kasy Magento Onepage?

18

Korzystam z CE 1.7 i obecnie próbuję usunąć koszty wysyłki, metody wysyłki i płatności z kasy Onepage. Już usunąłem kroki z local\mage\checkout\block\onepage\abstract.php. Mój problem pojawia się, gdy próbuję przejść od informacji rozliczeniowych do sprawdzenia, gdy klikam przycisk Kontynuuj, ładuje obraz wczytywania następnego kroku, a nie zatrzymuje się. Jakiekolwiek pomysły będą mile widziane.

Egregory
źródło
Ponieważ nie mogę jeszcze komentować (proszę), czy możesz nam powiedzieć i odpowiedzieć na pytanie, co zrobiłeś (w OnepageController.php), aby pominąć płatność w CE 1.7. Dzięki.
heaven7
Cześć @Egregory, masz więcej informacji o tym, jak to zrobiłeś? Próbuję zrobić to samo!
Edgar Quintero
@edgarQuintero użyty przeze mnie kod jest kombinacją zatwierdzonej odpowiedzi i przesłanego przeze mnie kodu. Może być inaczej w nowszych wersjach, ponieważ robiłem to w CE 1.7
Egregory
@Egregory Tak, przepisałem poniższe funkcje opublikowane przez Bijala Bhavsara, a także dodałem modyfikacje OnepageController.php, wyczyściłem pamięć podręczną i sesję, aby się upewnić, ale nadal nie ma zmian. Mam też 1.7.
Edgar Quintero

Odpowiedzi:

13

Spróbuj przepisać poniżej plików bloków za pomocą następujących funkcji:

Przepisz klasę Mage_Checkout_Block_Onepage_Billing

    public function canShip()
    {
        return false;
    }

Przepisz klasę Mage_Checkout_Block_Onepage_Shipping_Method

    public function isShow()
    {
        return false;
    }

Przepisz klasę Mage_Checkout_Block_Onepage_Shipping

    public function isShow()
    {
          return false;
    }

Mam nadzieję, że teraz problem związany z postępem nie wystąpi.

Bijal Bhavsar
źródło
Wciąż uczę się możliwości przepisywania Magento. Czy utworzę to w nowym module, czy po prostu utworzę to w sekcji app \ code \ local?
Egregory
Musisz utworzyć nowy moduł i przepisać pliki. Jak zastąpić plik bloku? Możesz przejrzeć inchoo.net/ecommerce/magento/…
Bijal Bhavsar
Dzięki, że wszystko zrozumiałem, onepagecontroller.php rozłączył mnie, gdy dokonałem poprawnych zmian i przepisałem, żeby wszystko zaczęło działać.
Egregory,
@Egregory, czy mógłbyś udostępnić swój onepagecontroller.php - jak zmieniłeś go, aby zaczął działać? Dzięki!
srdan
Jest stary, ale wciąż próbowałem z Magento 1.9.2 i nie działa
Altaf Hussain
4

Trochę stary, ale spójrz tutaj:

Usuń login http://excellencemagentoblog.com/magento-onestep-checkout-remove-login-step

Usuń płatność + wysyłka http://excellencemagentoblog.com/magento-onestep-checkout-remove-payment-and-shipping-method-step

usuń płatność http://excellencemagentoblog.com/magento-onestep-checkout-remove-payment-method-step

usuń wysyłkę http://excellencemagentoblog.com/magento-onestep-checkout-remove-shipping-method-step

Dodaj krok http://excellencemagentoblog.com/magento-onestep-checkout-add-step

snh_nl
źródło
2

@ heaven7 Zmieniłem te bity w OnepageController.php ogólnie Zrobiłem więcej niż manipulowałem tym, ale wymienię mój kod, abyś mógł zobaczyć, co dokładnie zmieniłem. Pamiętaj tylko, aby zrobić to tylko w lokalnej kopii, a nie w folderze głównym.

    `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
źródło
1

skorzystaj z tego linku

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

lub

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

to może ci pomóc

Keyur Shah
źródło
1
Posty zawierające tylko łącze są niskiej jakości dla formatu tej witryny. Rozwiń swoją odpowiedź.
philwinkle
Doceniam odpowiedź, ale koncentrują się bardziej na ce 1.6 niż 1.7. Istnieją pewne różnice w tym, gdzie się znajdują, tak jak kody kroków w 1.7 znajdują się w pliku Abstract.php.
Egregory