thêm hộp kiểm Bản tin trong hình thức thanh toán


11

Tôi muốn thêm bản tin hộp kiểm vào biểu mẫu thanh toán khi người dùng chọn đăng ký trực tiếp trong quy trình thanh toán .. Làm thế nào tôi có thể làm điều đó?


2
Bạn có tình cờ sử dụng MailChimp cho nhu cầu gửi thư bản tin của mình không? Tiện ích mở rộng MageMonkey của ezbizmarts có tùy chọn cấu hình để thêm đăng ký bản tin vào quy trình thanh toán.
Darren Felton

Câu trả lời:


15

xin chào, bạn có thể thêm phần này bằng cách thêm mã bên dưới tại billing.phtml

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

sử dụng sự kiện checkout_submit_all_after đăng ký khách hàng để nhận bản tin

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

Và mã Observer là:

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

Mô-đun đầy đủ:

Bước 1: tạo tệp config.xml tại app/code/local/Stackexchange/Magento52274/etc/và mã là

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

Bước2: tạo Observer.phptại app/code/local/Stackexchange/Magento52274/Model/và mã là

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

}

Bước 3: tạo Module app/etc/modules/Stackexchange_Magento52274.xmlvà mã là

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

Bước 4: Và cũng cần thêm lĩnh vực bản tin tại billing.phtmlmột

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

2
Điều này có thể có thể sử dụng một chút dọn dẹp - ít nhất, một số mã trong "Mô-đun đầy đủ" không khớp với mã trước đó trong câu trả lời.
Mike

2
thật tuyệt, chỉ có thế -> getBillingAddress () -> getEmail () không phải lúc nào cũng nhận được email, đặc biệt là khi có email paypal liên quan. getCustomerEmail an toàn hơn.
Claudiu Creanga 11/03/2016

Xin vui lòng bỏ qua câu trả lời này. Tôi không biết làm thế nào điều này có thể nhận được nhiều upvote này. Điều này sẽ không hoạt động! Bạn không thể truy cập các trường mẫu thanh toán trong các checkout_submit_all_afterquan sát viên. Xin hãy xem triển khai này: magento.stackexchange.com/questions/219460/iêu
Michael Tê-sa-lô
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.