tambahkan kotak centang Nawala dalam bentuk penagihan

11

Saya ingin menambahkan kotak centang buletin dalam formulir penagihan ketika pengguna memilih untuk mendaftar langsung dalam proses checkout .. Bagaimana saya bisa melakukan itu?

gianis6
sumber
2
Apakah Anda memiliki rencana untuk memanfaatkan MailChimp untuk kebutuhan pengiriman surat berkala Anda? Ekstensi MageMonkey oleh ezbizmarts memiliki opsi konfigurasi untuk menambahkan pendaftaran nawala ke proses checkout.
Darren Felton

Jawaban:

15

hai Anda dapat menambahkan ini dengan menambahkan kode di bawah ini di billing.phtml

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

menggunakan acara checkout_submit_all_afterberlangganan pelanggan ke buletin

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

Dan kode pengamat adalah:

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

Modul Lengkap:

Langkah1: buat config.xml di app/code/local/Stackexchange/Magento52274/etc/dan kode adalah

<?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> 

Langkah2: buat Observer.phpdi app/code/local/Stackexchange/Magento52274/Model/dan kode

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

}

Langkah 3: buat Modul app/etc/modules/Stackexchange_Magento52274.xmldan kode

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

Langkah4: Dan juga perlu menambahkan bidang buletin di billing.phtmla

<input type="checkbox" name="is_subscribed" 
  title="<?php echo $this->__('Sign Up for Newsletter') ?>" value="1"  checked="checked" class="checkbox" />
Amit Bera
sumber
2
Ini mungkin dapat menggunakan sedikit pembersihan - setidaknya, beberapa kode di bawah "Modul Lengkap" tidak cocok dengan kode sebelumnya dalam jawaban.
Mike
2
bagus, hanya saja -> getBillingAddress () -> getEmail () tidak selalu mendapat email, terutama ketika ada email paypal yang terlibat. getCustomerEmail lebih aman.
Claudiu Creanga
Harap abaikan jawaban ini. Saya tidak tahu bagaimana ini bisa mendapatkan banyak upvotes ini. Ini tidak akan berhasil! Anda tidak dapat mengakses bidang formulir penagihan di checkout_submit_all_afterpengamat. Silakan lihat implementasi ini: magento.stackexchange.com/questions/219460/…
Michael Thessel