¿Cómo eliminar pasos de la compra de Magento Onepage?

18

Estoy usando CE 1.7 y actualmente estoy tratando de eliminar el envío, el método de envío y los pasos de pago del pago de Onepage. Ya eliminé los pasos de local\mage\checkout\block\onepage\abstract.php. Mi problema surge cuando intento pasar de la información de facturación a la revisión cuando hago clic en continuar, carga la imagen de carga del siguiente paso que permanece quieto. Cualquier idea sería muy apreciada.

Egregory
fuente
Como no puedo comentar (todavía), por favor, ¿podría decirnos y responder su pregunta, qué hizo (en OnepageController.php), para omitir el pago en CE 1.7. Gracias.
heaven7
Hola @Egregory, ¿tienes más información sobre cómo hiciste esto? Estoy tratando de hacer lo mismo!
Edgar Quintero
@edgarQuintero el código que utilicé es una combinación de la respuesta aprobada y el código que envié. También podría ser diferente en las versiones más recientes, ya que estaba haciendo esto en CE 1.7
Egregory
@Egregory Sí. Reescribí las siguientes funciones publicadas por Bijal Bhavsar y también agregué tus modificaciones de OnepageController.php, borré la caché y la sesión solo para estar seguro, pero aún no he cambiado. También estoy en 1.7.
Edgar Quintero

Respuestas:

13

Intente reescribir a continuación los archivos de bloque con las siguientes funciones:

Reescribir clase Mage_Checkout_Block_Onepage_Billing

    public function canShip()
    {
        return false;
    }

Reescribir clase Mage_Checkout_Block_Onepage_Shipping_Method

    public function isShow()
    {
        return false;
    }

Reescribir clase Mage_Checkout_Block_Onepage_Shipping

    public function isShow()
    {
          return false;
    }

Espero que ahora no ocurra un problema relacionado con el progreso.

Bijal Bhavsar
fuente
Todavía estoy aprendiendo las capacidades de reescritura de Magento. ¿Crearía esto en un nuevo módulo o simplemente lo creo en la sección app \ code \ local?
Egregory
Tienes que crear un nuevo módulo y reescribir archivos. ¿Cómo anular el archivo de bloque? Puede revisar inchoo.net/ecommerce/magento/…
Bijal Bhavsar el
Gracias. Ya resolví todo, onepagecontroller.php me estaba colgando una vez que hice los cambios correctos e hice una reescritura para que todo comenzara a funcionar.
Egregory
@Egregory, ¿podría compartir el suyo onepagecontroller.php? ¿Cómo lo cambió para comenzar a funcionar? ¡Gracias!
srdan
Es viejo, pero aún lo intenté con Magento 1.9.2 y no funciona
Altaf Hussain
4

Un poco viejo pero mira aquí:

Eliminar inicio de sesión http://excellencemagentoblog.com/magento-onestep-checkout-remove-login-step

Eliminar pago + envío http://excellencemagentoblog.com/magento-onestep-checkout-remove-payment-and-shipping-method-step

eliminar pago http://excellencemagentoblog.com/magento-onestep-checkout-remove-payment-method-step

eliminar el envío http://excellencemagentoblog.com/magento-onestep-checkout-remove-shipping-method-step

Agregue el paso http://excellencemagentoblog.com/magento-onestep-checkout-add-step

snh_nl
fuente
2

@ heaven7 Cambié estos bits en OnepageController.php en general, hice más que manipular esto, pero enumeraré mi código para que pueda ver exactamente lo que cambié. Solo recuerde hacer esto solo en una copia local y no en la carpeta 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
fuente
1

por favor sigue este enlace

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

o

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

puede ayudarte

Keyur Shah
fuente
1
Las publicaciones de solo enlace son de baja calidad para el formato de este sitio. Por favor expanda su respuesta.
philwinkle
Agradezco la respuesta, pero estos se centran más en ce 1.6 que en 1.7. Hay algunas diferencias en la ubicación de las cosas, como los códigos de paso en 1.7 en el archivo Abstract.php.
Egregory