청구서 양식에 뉴스 레터 확인란 추가


11

사용자가 결제 프로세스에 직접 등록 할 때 결제 양식에 확인란 뉴스 레터를 추가하고 싶습니다. 어떻게해야합니까?


2
귀하의 뉴스 레터 메일 요구에 MailChimp를 활용할 계획이 있습니까? ezbizmarts의 MageMonkey 확장 프로그램에는 체크 아웃 프로세스에 뉴스 레터 가입을 추가 할 수있는 구성 옵션이 있습니다.
Darren Felton

답변:


15

안녕 당신은 billing.phtml에 아래 코드를 추가하여 이것을 추가 할 수 있습니다

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

전체 모듈 :

1 단계 : 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.phpapp/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;
    }

}

3 단계 : 모듈 생성 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>

4 단계 : 또한 뉴스 레터 필드를 추가해야합니다 billing.phtml.

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

2
아마도 약간의 정리가 필요할 수 있습니다. 최소한 "풀 모듈"아래의 코드 중 일부는 이전의 코드와 일치하지 않습니다.
Mike

2
단지-> getBillingAddress ()-> getEmail ()은 특히 페이팔 이메일이 관련된 경우 항상 이메일을받지는 않습니다. getCustomerEmail이 더 안전합니다.
Claudiu Creanga

이 답변을 무시하십시오. 나는 이것이 어떻게 많은 공감대를 얻을 수 있는지 전혀 모른다. 작동하지 않습니다! checkout_submit_all_after옵저버의 청구 양식 필드에 액세스 할 수 없습니다 . 이 구현을 살펴보십시오 : magento.stackexchange.com/questions/219460/…
Michael Thessel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.