Menambahkan Langkah ke Checkout Satu Halaman

18

Apakah ada ekstensi, modul Magento open-source, atau tutorial yang membuat menambahkan langkah ke checkout satu halaman lebih mudah? Saya telah menyodok kode inti untuk ini beberapa kali dan sepertinya ada banyak informasi langkah kode keras.

Alan Storm
sumber
5
Sayangnya kode Checkout tampaknya tidak terlalu fleksibel, banyak informasi yang di-hardcoded dari templat ke file javascript accordion.
Allan MacGregor
1
Saya telah mengikuti tutorial ini dan dapat menambahkan langkah baru di checkout di situs. Lagi pula banyak file inti perlu diganti untuk mencapai langkah ini. Semoga ini bisa membantu excellencemagentoblog.com/magento-onestep-checkout-add-step
Sukeshini

Jawaban:

6

Jawaban singkat untuk pertanyaan ini akhirnya adalah "Tidak". Dari level tinggi, menambahkan langkah checkout baru berarti

  1. Menambahkan Blok baru ke halaman checkout satu langkah

  2. Memiliki blok itu mendaftar sendiri sebagai langkah

  3. Hubungkan blok itu dengan objek prototipe yang menangani semua interaksi

  4. Menulis ulang beberapa metode inti Magento untuk menyisipkan blok sebagai langkah

  5. Beberapa tipuan ajax untuk membuat progres bekerja.

Mencakup ini secara total berada di luar cakupan pertanyaan Stack Overflow. Tutorial yang ditautkan dalam pertanyaan lain memiliki banyak hal yang Anda perlukan, dan saya juga membuat ekstensi komersial baru untuk mempermudah semua ini .

Alan Storm
sumber
4

Secara default magento memberikan beberapa langkah checkout. Tetapi kadang-kadang Anda perlu menambahkan informasi tambahan dari pelanggan untuk referensi di masa mendatang. Kustomisasi yang diminta umum adalah menambahkan Formulir Kustom dalam proses checkout default. Ini bukan praktik yang baik untuk menyentuh file inti. Anda dapat melakukan ini melalui Modul utama. Dalam contoh ini Comapnyname adalah Ipragmatech dan nama Module adalah Checkoutstep .

Langkah1: Tambahkan langkah Kustom dalam proses checkout

Buka Ipragmatech> Checkoutstep> Blokir> Onepage> Checkoutstep.php file dan tulis kode berikut

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

Step2: Tambahkan langkah mana dan di mana Anda inginkan dalam proses checkout

Buka Ipragmatech> Checkoutstep> Blokir> Onepage> Checkoutstep.php file dan tulis kode berikut

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

Langkah3: Raih nilai yang diajukan dari formulir kustom dan atur nilai-nilai formulir kustom

Buka ipragmatech> Checkoutstep> controllers> OnepageController.php dan tuliskan fucntion berikut

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

Langkah4: Simpan informasi Formulir Kustom

Saat checkout_onepage_controller_success_action, kail acara dipanggil. Buka Ipragmatech> Checkoutstep> Model> Observer.php dan tulis yang berikut ini

    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 - Tambahkan Formulir Kustom di Ekstensi Checkout adalah solusi lengkap untuk menambahkan langkah ekstra dalam proses Checkout untuk situs web e-niaga Anda. Itu memungkinkan admin untuk mengekspor data dari tabel khusus dalam format CSV.

Kunjungi tautan untuk mendapatkan ekstensi gratis ini http://www.magentocommerce.com/magento-connect/custom-form-in-checkout.html

Ajay
sumber
0

ya ada tutorial bagus tentang ini di sini " http://excellencemagentoblog.com/magento-onestep-checkout-add-step "

Saran Dhanpat
sumber
4
Anda harus menjelaskan sedikit apa yang ditemukan di akhir url itu. Jawaban tautan tunggal bukan jawaban terbaik.
Marius
url itu sendiri mengatakan magento-onestep-checkout-add-step dan ini adalah pertanyaan yang ditanyakan.
Dhanpat Saran
5
Saya setuju dengan Anda, penjelasan dalam tautan ini luar biasa, tetapi lihat bagaimana jawabannya di situs web SO: meta.stackexchange.com/a/8259/224252 dan ini: magento.stackexchange.com/help/how -untuk menjawab
Marius