¿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.


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.


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

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));
        }
    }

1

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.