Dodanie kroku do kasy z jedną stroną

18

Czy są jakieś rozszerzenia, moduły Magento typu open source lub samouczki, które ułatwiają dodanie kroku do kasy na jednej stronie? Kilka razy nacisnąłem na kod podstawowy i wygląda na to, że jest dużo zakodowanych informacji o krokach.

Alan Storm
źródło
5
Niestety kod kasy nie wydaje się zbyt elastyczny, wiele informacji jest zapisanych na stałe w szablonach i plikach akordeonu javascript.
Allan MacGregor
1
Postępowałem zgodnie z tym samouczkiem i mogłem dodać nowy krok w kasie na stronie. W każdym razie wiele plików podstawowych musi zostać zastąpionych, aby osiągnąć ten krok. Mam nadzieję, że to pomoże excellencemagentoblog.com/magento-onestep-checkout-add-step
Sukeshini

Odpowiedzi:

6

Krótka odpowiedź na to pytanie okazała się „nie”. Z wysokiego poziomu oznaczało dodanie nowego etapu kasy

  1. Dodanie nowego bloku do strony kasowania w jednym kroku

  2. Posiadanie tego bloku rejestruje się jako krok

  3. Połącz ten blok z prototypowym obiektem, który obsługiwał wszystkie interakcje

  4. Przepisanie kilku podstawowych metod Magento, aby wstawić blok jako krok

  5. Trochę oszustw ajax, aby działały postępy.

Objęcie tego łącznie wykracza poza zakres pojedynczego pytania dotyczącego przepełnienia stosu. Samouczek połączony z innym pytaniem zawiera wiele potrzebnych informacji, a także stworzyłem nowe rozszerzenie komercyjne, aby ułatwić to wszystko .

Alan Storm
źródło
4

Domyślnie magento podaje kilka kroków do kasy. Ale czasami musisz dodać dodatkowe informacje od klienta, aby móc z nich skorzystać w przyszłości. Często wymaganym dostosowaniem jest dodanie niestandardowego formularza w domyślnym procesie realizacji transakcji. Nie jest dobrą praktyką dotykanie podstawowych plików. Możesz to zrobić poprzez przesłanianie modułów. W tym przykładzie Comapnyname to Ipragmatech, a nazwa modułu to Checkoutstep .

Krok 1: Dodaj krok niestandardowy w procesie realizacji transakcji

Otwórz plik Ipragmatech> Checkoutstep> Block> Onepage> Checkoutstep.php i napisz następujący kod

    class Ipragmatech_Checkoutstep_Block_Onepage_Checkoutstep extends Mage_Checkout_Block_Onepage_Abstract
    {
       protected function _construct()
       {     
          $this->getCheckout()->setStepData('checkoutstep', array(
          'label'     => Mage::helper('checkout')->__('Invitation to participation'),
          'is_show'   => true
        ));
        parent::_construct();
       }
     }

Krok 2: Dodaj kroki, które i gdzie chcesz w procesie realizacji transakcji

Otwórz plik Ipragmatech> Checkoutstep> Block> Onepage> Checkoutstep.php i napisz następujący kod

    class Ipragmatech_Checkoutstep_Block_Onepage extends Mage_Checkout_Block_Onepage
    {
      public function getSteps()
      {
             $steps = array();

             if (!$this->isCustomerLoggedIn()) {
                $steps['login'] = $this->getCheckout()->getStepData('login');
             }

            $stepCodes = array('billing', 'shipping', 'shipping_method', 'payment', 'checkoutstep', 'review');
         foreach ($stepCodes as $step) {
             $steps[$step] = $this->getCheckout()->getStepData($step);
          }

    return $steps;
   }
}

Krok 3: Chwyć przesłaną wartość formularza niestandardowego i ustaw wartości formularza niestandardowego

Otwórz ipragmatech> Checkoutstep> kontrolery> OnepageController.php i napisz następującą funkcję

    public function saveCheckoutstepAction()
    {
      $this->_expireAjax();
      if ($this->getRequest()->isPost()) {

     //Grab the submited value 
     $_entrant_name = $this->getRequest()->getPost('entrant_name',"");
     $_entrant_phone = $this->getRequest()->getPost('entrant_phone',"");
     $_entrant_email = $this->getRequest()->getPost('entrant_email',"");
     $_permanent_address = $this->getRequest() ->getPost('permanent_address',"");
     $_address = $this->getRequest()->getPost('local_address',"");

     Mage::getSingleton('core/session') ->setIpragmatechCheckoutstep(serialize(array(
    'entrant_name' =>$_entrant_name,
    'entrant_phone' =>$_entrant_phone,
    'entrant_email' =>$_entrant_email,
    'permanent_address' =>$_permanent_address,
    'address' =>$_address
     )));

    $result = array();
    $redirectUrl = $this->getOnePage()->getQuote()->getPayment() ->getCheckoutRedirectUrl();
        if (!$redirectUrl) {
            $this->loadLayout('checkout_onepage_review');
            $result['goto_section'] = 'review';
            $result['update_section'] = array(
                'name' => 'review',
                'html' => $this->_getReviewHtml()
            );

        }

        if ($redirectUrl) {
            $result['redirect'] = $redirectUrl;
        }

        $this->getResponse()->setBody(Zend_Json::encode($result));
    }
}

Krok 4: Zapisz informacje o formularzu niestandardowym

Gdy wywoływany jest checkout_onepage_controller_success współdziałanie zdarzeń. Otwórz Ipragmatech> Checkoutstep> Model> Observer.php i napisz następujące

    class Ipragmatech_Checkoutstep_Model_Observer {
      const ORDER_ATTRIBUTE_FHC_ID = 'checkoutstep';
      public function hookToOrderSaveEvent() {
      if (Mage::helper('checkoutstep')->isEnabled()) {
         $order = new Mage_Sales_Model_Order ();
         $incrementId = Mage::getSingleton ( 'checkout/session' )->getLastRealOrderId ();
         $order->loadByIncrementId ( $incrementId );

       // Fetch the data 
       $_checkoutstep_data = null;
       $_checkoutstep_data = Mage::getSingleton ( 'core/session' )->getIpragmatechCheckoutstep ();
       $model = Mage::getModel ( 'checkoutstep/customerdata' )->setData ( unserialize ( $_checkoutstep_data ) );
       $model->setData ( "order_id",$order["entity_id"] );
       try {
           $insertId = $model->save ()->getId ();
             Mage::log ( "Data successfully inserted. Insert ID: " . $insertId, null, 'mylog.log');
        } catch ( Exception $e ) {
            Mage::log ( "EXCEPTION " . $e->getMessage (), null, 'mylog.log' );
          }
        }
    }

}

Magento - Dodaj niestandardowy formularz w rozszerzeniu kasy to kompletne rozwiązanie umożliwiające dodanie dodatkowego kroku w procesie realizacji transakcji w witrynie e-commerce. Umożliwia administratorowi eksport danych z niestandardowej tabeli w formacie CSV.

Odwiedź link, aby uzyskać to bezpłatne rozszerzenie http://www.magentocommerce.com/magento-connect/custom-form-in-checkout.html

Ajay
źródło
0

tak, tutaj jest dobry tutorial na ten temat „ http://excellencemagentoblog.com/magento-onestep-checkout-add-step

Dhanpat Saran
źródło
4
Powinieneś trochę wyjaśnić, co znajduje się na końcu tego adresu URL. Odpowiedzi na pojedyncze łącza nie są najlepszymi odpowiedziami.
Marius
sam adres URL mówi magento-onestep-check-add-step i właśnie o to pyta pytanie.
Dhanpat Saran
5
Zgadzam się z tobą, wyjaśnienie w linku jest wspaniałe, ale spójrz, jak odpowiedzi powinny znaleźć się na stronach SO: meta.stackexchange.com/a/8259/224252 i to: magento.stackexchange.com/help/how -do-odpowiedzi
Marius