बिलिंग प्रपत्र में न्यूज़लेटर चेकबॉक्स जोड़ें


11

जब मैं उपयोगकर्ता को चेकआउट प्रक्रिया में सीधे पंजीकरण करने का विकल्प चुनता हूं तो मैं बिलिंग फॉर्म में चेकबॉक्स न्यूज़लेटर जोड़ना चाहूंगा .. मैं यह कैसे कर सकता हूं?


2
क्या आपके पास अपने न्यूज़लेटर मेलिंग की जरूरतों के लिए MailChimp का उपयोग करने की कोई योजना है? Ezbizmarts द्वारा MageMonkey एक्सटेंशन में चेकआउट प्रक्रिया में न्यूज़लेटर साइनअप जोड़ने के लिए एक कॉन्फ़िगरेशन विकल्प है।
डैरेन फेल्टन

जवाबों:


15

hi आप इसे बिलिंग कोड में नीचे दिए गए कोड द्वारा जोड़ सकते हैं

 <input type="checkbox" name="is_subscribed" 
  title="<?php echo $this->__('Sign Up for Newsletter') ?>" value="1"  checked="checked" class="checkbox" />

घटना का उपयोग करके checkout_submit_all_afterग्राहक को न्यूज़लेटर की सदस्यता दें

  <global>
 <events>
    <checkout_submit_all_after> <!-- identifier of the event we want to catch -->
        <observers>
          <checkout_submit_all_after_handler> <!-- identifier of the event handler -->
            <type>singleton</type> <!-- class method call type; valid are model, object and singleton -->
            <class>magento52274/observer</class> <!-- observers class alias -->
            <method>AssignNewletter</method>  <!-- observer's method to be called -->
            <args></args> <!-- additional arguments passed to observer -->
          </checkout_submit_all_after_handler>
        </observers>
      </checkout_submit_all_after>
    </events>
  </global>

और प्रेक्षक कोड है:

   public function AssignNewletter($observer) {
            $event = $observer->getEvent();
            $order = $event->getOrder();
        $Quote =$event->getQuote();
        if (in_array($Quote()->getCheckoutMethod(), array('register','customer'))):

        if (Mage::app()->getFrontController()->getRequest()->getParam('is_subscribed')){
        $status = Mage::getModel('newsletter/subscriber')->subscribe($Quote->getBillingAddress()->getCustomerEmail());
        }
        endif;
   }

पूर्ण मॉड्यूल:

Step1: पर config.xml बनाएँ app/code/local/Stackexchange/Magento52274/etc/और कोड है

<?xml version="1.0"?>
<config>
  <modules>
    <Stackexchange_Magento52274>
      <version>1.0.0</version>
    </Stackexchange_Magento52274>
  </modules>
  <global>
    <models>
      <magento52274>
        <class>Stackexchange_Magento52274_Model</class>
      </magento52274>
    </models>
    <events>
      <checkout_submit_all_after> <!-- identifier of the event we want to catch -->
        <observers>
          <checkout_submit_all_after_handler> <!-- identifier of the event handler -->
            <type>singleton</type> <!-- class method call type; valid are model, object and singleton -->
            <class>magento52274/observer</class> <!-- observers class alias -->
            <method>AssignNewletter</method>  <!-- observer's method to be called -->
          </checkout_submit_all_after_handler>
        </observers>
      </checkout_submit_all_after>
    </events>
  </global>
</config> 

चरण 2: बनाने Observer.phpपर app/code/local/Stackexchange/Magento52274/Model/और कोड है

<?php
class Stackexchange_Magento52274_Model_Observer
{

    public function AssignNewletter(Varien_Event_Observer $observer)
    {
    $event = $observer->getEvent();
            $order = $event->getOrder();
        $Quote =$event->getQuote();
        if (in_array($Quote()->getCheckoutMethod(), array('register','customer'))):

            if Mage::app()->getFrontController()->getParam('is_subscribed', false)){
        $status = Mage::getModel('newsletter/subscriber')->subscribe($Quote->getBillingAddress()->getEmail());
         }
        endif;
    }

}

Step3: मॉड्यूल बनाएं app/etc/modules/Stackexchange_Magento52274.xmlऔर कोड है

<?xml version="1.0"?>
<config>
  <modules>
    <Stackexchange_Magento52274>
      <active>true</active>
      <codePool>local</codePool>
      <version>1.0.0</version>
    </Stackexchange_Magento52274>
  </modules>
</config>

Step4: और भी billing.phtmlएक पर न्यूजलेटर क्षेत्र जोड़ने की जरूरत है

<input type="checkbox" name="is_subscribed" 
  title="<?php echo $this->__('Sign Up for Newsletter') ?>" value="1"  checked="checked" class="checkbox" />

2
यह शायद थोड़ा सफाई का उपयोग कर सकता है - बहुत कम से कम, "पूर्ण मॉड्यूल" के तहत कोड में से कुछ कोड उत्तर में पहले से मेल नहीं खाते हैं।
माइक

2
अच्छा है, बस -> getBillingAddress () -> getEmail () को हमेशा ईमेल नहीं मिलता है, खासकर जब कोई पेपाल ईमेल शामिल हो। getCustomerEmail सुरक्षित है।
क्लॉडिउ क्रेगना

कृपया इस उत्तर की अवहेलना करें। मुझे नहीं पता कि यह कैसे इस कई अपवोट्स को प्राप्त कर सकता है। यह नहीं चलेगा! आप checkout_submit_all_afterपर्यवेक्षकों में बिलिंग प्रपत्र फ़ील्ड तक पहुँचने में सक्षम नहीं हैं । कृपया इस कार्यान्वयन पर एक नज़र डालें: magento.stackexchange.com/questions/219460/…
माइकल थेसेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.