Como remover etapas do checkout do Magento Onepage?


18

Estou usando o CE 1.7 e atualmente estou tentando remover as etapas de remessa, método de remessa e pagamento do checkout Onepage. Eu já removi as etapas de local\mage\checkout\block\onepage\abstract.php. Meu problema ocorre ao tentar avançar das informações de cobrança para revisar quando clico em continuar, ele carrega a imagem da próxima etapa de carregamento do que fica parado. Qualquer idéia será muito bem vinda.


Como ainda não posso comentar, por favor, você poderia nos dizer e responder à sua pergunta, o que fez (no OnepageController.php), para pular o pagamento no CE 1.7. Obrigado.
heaven7

Olá @Egregory, mais alguma informação sobre como você fez isso? Estou tentando fazer o mesmo!
Edgar Quintero

@edgarQuintero o código que usei é uma combinação da resposta aprovada e do código que enviei. Também pode ser diferente nas versões mais recentes, pois eu estava fazendo isso no CE 1.7
Egregory

@Egregory Sim, eu reescrevi as funções abaixo postadas por Bijal Bhavsar e também adicionei suas modificações OnepageController.php, limpei o cache e a sessão apenas para ter certeza, mas ainda não houve alterações. Eu também estou no 1.7.
Edgar Quintero

Respostas:


13

Tente reescrever os arquivos de bloco abaixo com as seguintes funções:

Reescrever classe Mage_Checkout_Block_Onepage_Billing

    public function canShip()
    {
        return false;
    }

Reescrever classe Mage_Checkout_Block_Onepage_Shipping_Method

    public function isShow()
    {
        return false;
    }

Reescrever classe Mage_Checkout_Block_Onepage_Shipping

    public function isShow()
    {
          return false;
    }

Espero que agora o problema relacionado ao progresso não ocorra.


Ainda estou aprendendo as capacidades de reescrita do Magento. Eu criaria isso em um novo módulo ou apenas criaria isso na seção app \ code \ local?
Egregory

Você precisa criar um novo módulo e reescrever arquivos. Como substituir o arquivo de bloco? Você pode revisar inchoo.net/ecommerce/magento/…
Bijal Bhavsar

Obrigado, eu entendi tudo, o onepagecontroller.php estava me desligando assim que eu fiz as alterações corretas e reescrevi para que tudo começasse a funcionar.
Egregory

@Egregory, por favor, compartilhe o seu onepagecontroller.php - como você o mudou para começar a trabalhar. Obrigado!
S28,

É velho, mas ainda assim eu tentei com Magento 1.9.2 e ele não está funcionando
Altaf Hussain

4

2

@ heaven7 Alterei esses bits no OnepageController.php no geral, fiz mais do que manipular isso, mas listarei meu código para que você possa ver exatamente o que eu mudei. Lembre-se de fazer isso apenas em uma cópia local e não na pasta principal.

    `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

11
As postagens apenas de link são de baixa qualidade para o formato deste site. Por favor, expanda sua resposta.
philwinkle

Agradeço a resposta, mas eles se concentram mais no CE 1.6 do que no 1.7. Existem algumas diferenças em como as coisas estão localizadas, como os códigos das etapas no 1.7, no arquivo Abstract.php.
Egregory
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.