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

简介:

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

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

$helper = Mage::helper('cms'); $processor = $helper->getPageTemplateProcessor(); $html = $processor->filter($this->getPage()->getContent()); ...  

 

先获得负责页面解析的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类中定义了负责解析相应指示符的一些方法:

 

public function blockDirective($construction) public function layoutDirective($construction) public function varDirective($construction)  

 

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



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

 

public function __construct(){ $variables = array('customer'=>Mage::getSingleton('customer/session')->getCustomer()); $this->setVariables($variables); }  

 

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

 

public function getPageTemplateProcessor() { return Mage::getModel('glscms/template_filter'); }  

 

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

在config.xml中加入:

 

<cms> <rewrite> <page>Glamour_GlsCms_Block_Cms_Page</page> </rewrite> </cms>  

 

class Glamour_GlsCms_Block_Cms_Page extends Mage_Cms_Block_Page { protected function _toHtml() { $helper = Mage::helper('glscms'); $html = parent::_toHtml(); if($helper->isEnabled()){ $processor = $helper->getPageTemplateProcessor(); $html = $processor->filter(parent::_toHtml()); } return $html; } }  

 

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

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

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

 

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

 

目录
相关文章
|
人工智能 搜索推荐 算法
智能时代下的伦理困境:AI技术与人类价值的博弈
随着人工智能技术的飞速发展,其在医疗、金融、教育等众多领域的应用日益广泛。然而,伴随技术进步而来的是一系列伦理问题,如隐私泄露、算法偏见和责任归属等。本文将探讨AI技术带来的伦理挑战,分析其背后的原因,并提出相应的解决策略,旨在促进AI技术的健康发展,同时保护人类社会的基本伦理价值。
285 3
|
11月前
|
人工智能 JavaScript 前端开发
《鸿蒙Next ArkTS:开启人工智能应用开发高效新旅程》
在科技飞速发展的时代,人工智能与鸿蒙Next的结合成为开发者关注的焦点。ArkTS语言基于TypeScript,专为鸿蒙系统优化,支持静态类型检查和多种高级类型,能捕获潜在错误并充分利用鸿蒙底层能力。鸿蒙Next拥有微内核架构和分布式软总线技术,提供强大支持。开发环境搭建需安装Node.js、npm及DevEco Studio,并下载HarmonyOS SDK。通过引入HUAWEI HiAI等框架,开发者可实现多目标识别等功能。利用ArkTS的异步编程能力和声明式UI模型,可高效处理数据和用户交互。性能优化策略包括静态类型检查、WebAssembly加速及分布式任务分配。
308 11
|
资源调度 监控 API
资源调度-HPA:基于负载指标自动水平扩容缩容Pod
资源调度-HPA:基于负载指标自动水平扩容缩容Pod
287 0
|
域名解析 监控 安全
【服务器】宝塔面板的使用手册
【服务器】宝塔面板的使用手册
918 0
|
存储 缓存 Unix
sar命令详解
`sar`是Linux性能分析工具,用于收集和报告CPU使用率、内存、磁盘I/O、网络和进程活动等系统性能数据。基本语法:`sar [options] [interval] [count]`。例如,`sar -u 5`每5秒显示CPU使用情况。`-A`显示所有报告,`-o file`将结果保存到文件。要使用`sar`,需先安装`sysstat`包。不同发行版支持的选项可能有差异,建议查阅手册页。
375 2
|
数据可视化 Linux Shell
配置SSH远程登录和免密登录
配置SSH远程登录和免密登录
|
弹性计算 负载均衡 小程序
一键配置版:搭建高可用的微信/支付宝小程序服务
本文提供在阿里云云服务器ECS上基于CentOS 7.9 64位操作系统搭建高可用的小程序服务端的指引。同时指导您在本地开发一个简单的微信/支付宝小程序——ECS小助手,通过远程调用部署在ECS上的服务端,实现在小程序中输入框输入ECS实例ID查询实例详细信息的功能。
一键配置版:搭建高可用的微信/支付宝小程序服务
|
JavaScript 前端开发 数据库
【Vue】vue如何将秒数转成“时分秒”格式
【Vue】vue如何将秒数转成“时分秒”格式
498 0
|
存储 开发工具 git
如何使用ffmpeg生成视频缩略图
如何使用ffmpeg生成视频缩略图
|
Web App开发 安全 应用服务中间件
亚马逊EC2服务器申请+NODE服务器部署+阿里云域名申请+SSL证书使用
最近,由于项目需要,自己申请了一台亚马逊用于部署网站测试,在使用期间,发现网上没有一篇非常完整的文章讲解从服务器申请到域名解析,SSL证书申请的整个流程。所以自己总结一下,以供大家学习! 一、亚马逊EC2申请 为什么选择申请亚马逊的服务器?只是因为项目需要而已,我本意是想申请阿里云的的服务器的(毕竟是阿里的员工),并且亚马逊提供一年的免费EC2服务器。
6107 0