aggiungi la casella di controllo Newsletter nel modulo di fatturazione


11

Vorrei aggiungere la newsletter della casella di controllo nel modulo di fatturazione quando l'utente sceglie di registrarsi direttamente alla procedura di pagamento. Come posso farlo?


2
Hai in programma di utilizzare MailChimp per le tue esigenze di invio di newsletter? L'estensione MageMonkey di ezbizmarts ha un'opzione di configurazione per aggiungere l'iscrizione alla newsletter al processo di pagamento.
Darren Felton,

Risposte:


15

ciao puoi aggiungere questo aggiungendo il codice qui sotto su billing.phtml

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

utilizzando l'evento checkout_submit_all_afteriscriviti al cliente alla newsletter

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

E il codice Observer è:

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

Modulo completo:

Step1: crea config.xml at app/code/local/Stackexchange/Magento52274/etc/e il codice è

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

Step2: crea Observer.phpa app/code/local/Stackexchange/Magento52274/Model/e il codice è

<?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: crea il modulo app/etc/modules/Stackexchange_Magento52274.xmle il codice è

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

Fase 4: E anche bisogno campo newsletter aggiungere a billing.phtmlun

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

2
Questo potrebbe probabilmente richiedere un po 'di pulizia: almeno, parte del codice in "Modulo completo" non corrisponde al codice precedente nella risposta.
Mike

2
bello, solo che -> getBillingAddress () -> getEmail () non sempre riceve l'e-mail, specialmente quando è coinvolta un'e-mail paypal. getCustomerEmail è più sicuro.
Claudiu Creanga,

Si prega di ignorare questa risposta. Non ho idea di come questo possa ottenere così tanti voti. Questo non funzionerà! Non è possibile accedere ai campi del modulo di fatturazione negli checkout_submit_all_afterosservatori. Dai
Michael Thessel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.