`
shuishui8310
  • 浏览: 150407 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

Magento在CMS Page中增加用户信息变量

阅读更多

Magento的cms页面和static block页面中可以用一些指示符来得到相应的信息,如{{skin url=".."}} {{media url="..."}}等。

在Mage_Cms_Block_Page类的_toHtml方法中可以找到下面的代码:

先获得负责页面解析的processor对象,然后由processor对象负责对页面中的指示符进行解析和替换工作。


查找cms helper类的getPageTemplateProcessor方法,我们得知processor对象是Mage_Cms_Model_Template_Filter类的实例。Mage_Cms_Model_Template_Filter继承自Mage_Core_Model_Email_Template_Filter类,在Mage_Core_Model_Email_Template_Filter类中定义了负责解析相应指示符的一些方法:

等,可以看到其实cms filter里面已经定义了var指示符,但是我们在cms页面的content里面插入{{var customer.name}}并不能正确被解析,原因是customer变量的值没有设置。



我们只要新建一个模块,继承Mage_Core_Model_Email_Template_Filter类,并设置customer变量的值为当前用户即可。

同时需要新建自定义的helper类,并重写getPageTemplateProcessor方法,返回我们自己的Filter类:

最后,我们重写Mage_Cms_Block_Page类的_toHtml方法:

在config.xml中加入:

我们就可以直接在cms内容里加入customer的一些信息了。

如:
{{var customer.email}}
{{var customer.firstname}}

Magento在解析cms页面时,会把上面的指示符替换为当前用户的相应属性。

原文链接地址:http://cgzhang.iteye.com/blog/825197

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics