Отображение автоматически сгенерированного кода купона на странице успеха


Я использую Magento Enterprise 1.14.0.1 На success.phtml у меня есть php-код, который автоматически генерирует код купона. Код генерирует купон, который я вижу в администраторе Magento.Однако я не могу понять, как отобразить его на странице?

Вот мой код, который генерирует купон

//Below is code to generate a coupon code and display it in a jquery popup window
$todaysdateis = date('Y-m-d', strtotime('+1 year'));
$generator = Mage::getModel('salesrule/coupon_massgenerator');

$data = array
(
    'max_probability'   => .25,
    'max_attempts'      => 10,
    'uses_per_customer' => 1,
    'uses_per_coupon'   => 1,
    'qty'               => 1, //number of coupons to generate
    'length'            => 14, //length of coupon string
    'to_date'           => "$todaysdateis", //ending date of generated promo
    /**
     * Possible values include:
     * Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_ALPHANUMERIC
     * Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_ALPHABETICAL
     * Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_NUMERIC
     */
    'format'          => Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_ALPHANUMERIC,
    'rule_id'         => 68 //the id of the shopping cart rule you will use as a template
 );

 $generator->validateData($data);
 $generator->setData($data);
 $generator->generatePool();

 //get the generate coupon code
 $salesRule = Mage::getModel('salesrule/rule')->load($data['rule_id']);
 $collection = Mage::getResourceModel('salesrule/coupon_collection')
              ->addRuleToFilter($salesRule)
              ->addGeneratedCouponsFilter();


 $thecode = $generator->getCode();

 echo "Your Code Is $thecode";

//Конечный код для создания кода купона и отображения его во всплывающем окне jquery ?>

Цель состоит в том, что я хочу в конечном итоге отобразить это на странице не отправьте его по электронной почте.

Author: Jayreis, 2015-09-16

1 answers

Начните с создания собственного модуля. Этот учебник объяснит, как это сделать.

Теперь нам понадобятся 3 вещи. Класс блоков, файл шаблона и XML-файл макета.

Конфигурация

app/code/local/[Namespace]/[Module]/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <[Namespace]_[Module]>
            <version>1.0.0</version>
        </[Namespace]_[Module]>
    </modules>
    <global>
        <blocks>
            <[namespace]_[module]>
                <class>[Namespace]_[Module]_Block</class>
            </[namespace]_[module]>
        </blocks>
    </global>
    <frontend>
        <layout>
            <updates>
                <[namespace]_[module]>
                    <file>ffm_codebin.xml</file>
                </[namespace]_[module]>
            </updates>
        </layout>
    </frontend>
</config>

Класс блоков будет содержать ваш код

app/code/local/[Namespace]/[Module]/Block/Coupon.php

Class [Namespace]_[Module]_Block_Coupon extends Mage_Core_Block_Template
{
   public function getVoucherCode() 
   {
      // your code goes here
      // but instead of echo, return it

      return $thecode;
   }
}

Теперь для файла шаблона, отображающего код, это может быть довольно просто

app/design/fontend/base/default/template/[namespace]_[module]/coupon.phtml

<?php

$vouchercode = $this->getVoucherCode();
?>

Your voucher code is <?php echo $vouchercode; ?>

И XML-файл макета

app/design/fontend/base/default/layout/[namespace]_[module].xml

<?xml version="1.0"?>
<layout version="0.1.0">
   <checkout_onepage_success>
      <reference name="content">
         <block type="[namespace]_[module]/coupon" name="couponcode" template="[namespace]_[module]/coupon.phtml"
      </reference>
   </checkout_onepage_success>
</layout>
 3
Author: Sander Mangel, 2015-09-16 17:59:12