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.

Egregory
fonte
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.

Bijal Bhavsar
fonte
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

Um pouco velho, mas dê uma olhada aqui:

Remova o login http://excellencemagentoblog.com/magento-onestep-checkout-remove-login-step

Remover pagamento + frete http://excellencemagentoblog.com/magento-onestep-checkout-remove-payment-and-shipping-method-step

remover pagamento http://excellencemagentoblog.com/magento-onestep-checkout-remove-payment-method-step

remover o envio http://excellencemagentoblog.com/magento-onestep-checkout-remove-shipping-method-step

Adicione a etapa http://excellencemagentoblog.com/magento-onestep-checkout-add-step

snh_nl
fonte
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));
        }
    }
Egregory
fonte
1

por favor siga este link

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

ou

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

isso pode te ajudar

Keyur Shah
fonte
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