Додавання кроку до замовлення на одну сторінку


18

Чи є розширення, модулі Magento з відкритим кодом або підручники, які полегшують додавання кроку до оформлення замовлення на одну сторінку? Я декілька разів натискав на основний код, і, схоже, є багато важко закодованої крокової інформації.


5
На жаль, код Checkout не здається дуже гнучким, багато інформації жорстко кодується від шаблонів до файлів акордеона javascript.
Аллан МакГрегор

1
Я дотримувався цього підручника і зміг додати новий крок в одну сторінку оформлення замовлення. У будь-якому випадку для досягнення цього кроку необхідно змінити багато основних файлів. Сподіваюся, це стане в нагоді excellencemagentoblog.com/magento-onestep-checkout-add-step
Сукешині

Відповіді:


6

Коротка відповідь на це запитання виявилася "Ні". З високого рівня означало додавання нового кроку оформлення замовлення

  1. Додавання нового блоку на сторінку однокрокового оформлення замовлення

  2. Маючи цей блок, зареєструйте себе як крок

  3. З'єднайте цей блок із об'єктом-прототипом, який обробляв усі взаємодії

  4. Переписання декількох основних методів Magento, щоб вставити блок як крок

  5. Деякі хитрощі Ajax, щоб отримати роботу з прогресом.

Загальне висвітлення цього питання виходить за межі одного питання щодо переповнення стека. Підручник, пов’язаний з іншим питанням, містить багато того, що вам знадобиться, і я також створив нове комерційне розширення, щоб полегшити все це .


4

За замовчуванням magento дає кілька етапів оформлення замовлення. Але десь вам потрібно буде додати додаткову інформацію від замовника для подальшого ознайомлення. Поширене запитуване налаштування - це додавання спеціальної форми в процес оформлення замовлення за замовчуванням. Це недоцільна практика торкатися основних файлів. Це можна зробити за допомогою модулів, що переважають. У цьому прикладі Comapnyname - це Ipragmatech, а назва модуля - Checkoutstep .

Крок 1. Додайте спеціальний крок у процесі оформлення замовлення

Відкрийте Ipragmatech> Checkoutstep> Block> Onepage> File Checkoutstep.php та введіть наступний код

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

Крок 2: Додайте кроки, які і де потрібно в процесі оформлення замовлення

Відкрийте Ipragmatech> Checkoutstep> Block> Onepage> File Checkoutstep.php та введіть наступний код

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

Крок 3: Візьміть подане значення власної форми та встановіть значення користувацької форми

Відкрийте ipragmatech> Checkoutstep> контролери> OnepageController.php і напишіть наступне fucntion

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

Крок 4: Збережіть інформацію про власну форму

Коли checkout_onepage_controller_success washing викликається гачок події Відкрийте Ipragmatech> Checkoutstep> Model> Observer.php і напишіть наступне

    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 - Додайте спеціальну форму в розширення Checkout - це повне рішення, щоб додати додатковий крок у процесі оформлення замовлення для вашого веб-сайту електронної комерції. Це дозволяє адміністратору експортувати дані з власної таблиці у форматі CSV.

Перейдіть за посиланням, щоб отримати це безкоштовне розширення http://www.magentocommerce.com/magento-connect/custom-form-in-checkout.html


0

Так, тут є хороший підручник з цього приводу " http://excellencemagentoblog.com/magento-onestep-checkout-add-step "


4
Ви повинні трохи пояснити, що знайдено в кінці цієї URL-адреси. Відповіді на одне посилання - не найкращі відповіді.
Маріус

Сам URL говорить magento-onestep-checkout-add-step, і ось що запитує питання.
Дханпат Саран

5
Я згоден з вами, пояснення у посиланні чудове, але погляньте, як відповіді мають бути на веб-сайтах ТА : meta.stackexchange.com/a/8259/224252 і це: magento.stackexchange.com/help/how -відповідь
Маріус
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.