एक पृष्ठ चेकआउट के लिए एक कदम जोड़ना


18

क्या कोई एक्सटेंशन, ओपन-सोर्स मैगेंटो मॉड्यूल, या ट्यूटोरियल हैं जो एक पेज चेकआउट के लिए एक कदम जोड़ना आसान बनाते हैं? मैंने इसके लिए कोर कोड पर कुछ समय के लिए पाला है और ऐसा लगता है कि बहुत सारी कठोर कोड जानकारी है।


5
दुर्भाग्य से चेकआउट कोड बहुत लचीला नहीं लगता है, बहुत सारी जानकारी टेम्प्लेट से जावास्क्रिप्ट अकॉर्डियन फाइलों में हार्डकोड की जाती है।
एलन मैकग्रेगर

1
मैंने इस ट्यूटोरियल का अनुसरण किया है और ऑनपेज चेकआउट में एक नया कदम जोड़ने में सक्षम था। वैसे भी इस कदम को हासिल करने के लिए बहुत सारी कोर फाइलों को ओवरराइड करने की जरूरत है। इस वसीयत उपयोगी आशा है कि excellencemagentoblog.com/magento-onestep-checkout-add-step
सुकेशिनी

जवाबों:


6

इस प्रश्न का संक्षिप्त उत्तर "नहीं" होने के कारण समाप्त हुआ। एक उच्च स्तर से, एक नया चेकआउट कदम जोड़ने का मतलब है

  1. एक कदम चेकआउट पृष्ठ पर एक नया ब्लॉक जोड़ना

  2. उस ब्लॉक के पास एक कदम के रूप में खुद को पंजीकृत करना

  3. उस ब्लॉक को एक प्रोटोटाइप ऑब्जेक्ट से कनेक्ट करें जिसने सभी इंटरैक्शन को संभाला है

  4. ब्लॉक को एक कदम के रूप में सम्मिलित करने के लिए कई मुख्य मैगेंटो विधियों को फिर से लिखना

  5. कुछ अजाक्स चालबाजी प्रगति सामान काम करने के लिए।

इसे कुल में कवर करना एकल स्टैक ओवरफ्लो प्रश्न के दायरे से परे है। एक अन्य प्रश्न में जुड़े ट्यूटोरियल में बहुत सारी चीजें हैं जिनकी आपको आवश्यकता होगी, और मैंने यह सब आसान बनाने के लिए एक नया वाणिज्यिक विस्तार भी बनाया ।


4

डिफ़ॉल्ट रूप से Magento कुछ चेकआउट चरण देता है। लेकिन कभी-कभी आपको भविष्य के संदर्भ के लिए ग्राहक से अतिरिक्त जानकारी जोड़ने की आवश्यकता होती है। एक सामान्य अनुरोधित अनुकूलन कस्टम चेक को डिफ़ॉल्ट चेकआउट प्रक्रिया में जोड़ना है। यह कोर फ़ाइलों को छूने के लिए अच्छा अभ्यास नहीं है। आप मॉड्यूल को ओवरराइड करके ऐसा कर सकते हैं। इस उदाहरण में Comapnyname Ipragmatech है और मॉड्यूल का नाम Checkoutstep है

Step1: चेकआउट प्रक्रिया में कस्टम चरण जोड़ें

Ipragmatech> Checkoutstep> Block> Onepage> 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> 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 को खोलें और निम्न फ़्यूकसेंट लिखें

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

Step4: कस्टम फ़ॉर्म जानकारी सहेजें

जब checkout_onepage_controller_success_action इवेंट हुक कहा जाता है। 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 - चेकआउट एक्सटेंशन में कस्टम फॉर्म जोड़ें अपनी ईकॉमर्स वेबसाइट के लिए चेकआउट प्रक्रिया में अतिरिक्त कदम जोड़ने के लिए एक पूर्ण समाधान है। यह व्यवस्थापक को CSV प्रारूप में कस्टम तालिका से डेटा निर्यात करने की अनुमति देता है।

इस मुफ्त एक्सटेंशन को पाने के लिए लिंक पर जाएँ http://www.magentocommerce.com/magento-connect/custom-form-in-heckoutout.html


0

हाँ यहाँ इस बारे में एक अच्छा ट्यूटोरियल है " http://excellencemagentoblog.com/magento-onestep-checkout-add-step "


4
आपको उस url के अंत में जो कुछ मिला है उसे थोड़ा समझाना चाहिए। एकल लिंक उत्तर सर्वश्रेष्ठ उत्तर नहीं हैं।
Marius

url खुद मैगेंटो-ऑनस्टेप-चेकआउट-ऐड-स्टेप कहता है और यही वह सवाल है जो सवाल पूछ रहा है।
धनपत सरन

5
मैं आपसे सहमत हूं, लिंक में स्पष्टीकरण अद्भुत है, लेकिन एसओ वेबसाइटों पर जवाब कैसे होना चाहिए, इस पर एक नज़र डालें: meta.stackexchange.com/a/8259/224252 और यह: magento.stackexchange.com/help/how करने वाली जवाब
मेरियस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.