1

我需要在客户注册后扩展自定义成功消息。现在注册后,用户被重定向到仪表板,并显示标准的成功消息:“感谢您注册...”。

我需要根据客户组属性更改此消息。我在线阅读但没有找到可行的解决方案......但我认为我以错误的方式制作它。我从这里开始:http: //mydons.com/simple-example-using-magento-event-observer/对 customer_register_success 事件进行自定义观察者,所以我在 app/etc/ 中创建了名为 Bbox_Regmess.xml 的模块 xml模块:

<config>
  <modules>
    <Bbox_Regmess>
      <active>true</active>
      <codePool>local</codePool>
    </Bbox_Regmess>
  </modules>
</config>

比我在 config.xml 中创建了 app/code/local/Bbox/Regmess/etc 和 app/code/local/Bbox/Regmess/Model 文件夹:

<config>
  <modules>
    <Bbox_Regmess>
      <version>0.1.0</version>
    </Bbox_Regmess>
  </modules>
  <frontend>
    <events>
      <customer_register_success>
        <observers>
          <Bbox_Regmess_Model_Observer>
            <type>singleton</type>
            <class>Bbox_Regmess_Model_Observer</class>
            <method>Customregmess</method>
          </Bbox_Regmess_Model_Observer>
        </observers>
      </customer_register_success>
    </events>
  </frontend>
</config>

Observer.php 只是第一次尝试查看我是否能够添加自定义成功消息:

<?php
    class Bbox_Regmess_Model_Observer {
        public function Customregmess($observer) {
        $event = $observer->getEvent();  //Fetches the current event
        $customer = $event->getCustomer();
            $eventmsg = "Current Event Triggered : <I>" . $event->getName() . "</I><br/> Currently Added Product : <I> " . $customer->getCustomerName()."</I>";
            //Adds Custom message to shopping cart
            Mage::getSingleton('customer/session')->addSuccess($eventmsg);
        }
    }
?>

现在,如果用户注册到商店,他会收到标准注册消息,并且没有自定义 $eventmsg

我做错了什么?还有另一种方法吗?谢谢

更新:
深入研究我发现默认成功消息是在第 390 行的 app/code/core/Mage/Customer/controllers/AccountController.php 中定义的(就在第 334 行之后,我定义了 customer_register_success 事件试图与之合作)。
在第 390 行有 _welcomeCustomer 函数,负责设置成功消息、发送确认电子邮件并设置成功重定向 url:

protected function _welcomeCustomer(Mage_Customer_Model_Customer $customer, $isJustConfirmed = false)
{
    $this->_getSession()->addSuccess(
        $this->__('Thank you for registering with %s.', Mage::app()->getStore()->getFrontendName())
    );

    $customer->sendNewAccountEmail(
        $isJustConfirmed ? 'confirmed' : 'registered',
        '',
        Mage::app()->getStore()->getId()
    );

    $successUrl = Mage::getUrl('*/*/index', array('_secure'=>true));
    if ($this->_getSession()->getBeforeAuthUrl()) {
        $successUrl = $this->_getSession()->getBeforeAuthUrl(true);
    }
    return $successUrl;
}

是否有机会扩展此功能,以便我可以根据客户组管理多个成功消息?
我一直在寻找一些关于它的资源,但我没有找到任何有用的东西

4

1 回答 1

0

我认为您必须将事件标签放在全局标签中

<config><global>...<events>...</events>...</global>...</config>

编辑:

并且观察者文件扩展了 Varien_Event_Observer,至少对我的工作

class Bbox_Regmess_Model_Observer extends Varien_Event_Observer{}
于 2013-10-21T08:27:40.107 回答