- 浏览: 73431 次
- 性别:
- 来自: 上海
最新评论
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页面时,会把上面的指示符替换为当前用户的相应属性。
在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页面时,会把上面的指示符替换为当前用户的相应属性。
发表评论
-
Magento随机生成sales rule的coupon code
2013-01-02 22:09 2268在Magento中可以使用SalesRule模块下的Mage_ ... -
Magento 后台配置中实现日期选择 (Date picker)
2012-12-28 15:07 2507首先,创建一个新的Form Field 类: <?p ... -
获得指定customer 购买的产品数据
2011-12-10 20:54 1370获得指定customer 购买的产品信息,如果是configu ... -
将缺货产品放在产品列表后面
2011-12-10 20:50 1400Rewrite Mage_Catalog_Model_Laye ... -
Mac Lion上安装配置Nginx PHP PHP-FPM
2011-12-10 16:01 8033<!--?xml version="1.0&q ... -
How to customize Magento as CMS system (1.5.0 CE)
2011-03-06 22:42 1064Before install: 1. Go to app/et ... -
How to redirect to another url in block or template
2011-02-25 13:47 1131In Block class: public funct ... -
Use call back function to proccess Magento large collection
2011-01-19 12:58 945$orders = Mage::getModel('sal ... -
How to remove unnecessary columns in Magento collection
2011-01-19 12:56 1137$orders = Mage::getModel('sal ... -
How to calculate currency according to reward points rate in Magento
2011-01-13 18:03 1334$rate = Mage::getModel('enter ... -
Magento二次开发的利器:Rewrite
2010-12-08 17:15 2739Magento是一个十分优秀的电子商务系统,但是有时候我们需要 ... -
增加Magento后台管理功能三:在后台设置(System/Configuration)中加入自定义设置
2010-11-30 16:17 1978在模块的etc目录下新建system.xml配置文件,内容如下 ... -
增加Magento后台管理功能二:开发后台Controller
2010-11-30 16:02 2711在模块的controllers目录下创建Adminhtml目录 ... -
增加Magento后台管理功能一:在后台管理界面加入菜单
2010-11-30 15:47 4539在模块的etc目录下增加adminhtml.xml配置文件,用 ... -
Magento根据不同的浏览器自动切换package或 theme
2010-11-26 10:05 2069在后台设置中: System > Configurat ... -
Magento让后台数据列表中的action列链接在新窗口打开
2010-11-08 16:56 1161'actions' => array( ... -
Maegen获得后台当前用户的信息
2010-11-08 16:53 917$admin = Mage::getSingleton(' ... -
Magento中用子类替换Block
2010-10-15 10:47 1857Step 1:创建一个新的Module Step 2: 编辑模 ... -
Magento中添加带有选项的属性
2010-10-14 14:49 1455下面的代码为Customer实体添加了性别属性,有两个可选值 ... -
Magento为后台用户保存操作日志(企业版)
2010-09-19 17:00 2765protected function _logAdm ...
相关推荐
CMS静态块在Magento中通常用于展示重复使用的静态内容,如网站底部的友情链接、页眉页脚信息、公司简介等。这些静态块可以通过后端的“CMS > 静态块”进行创建、编辑和管理,支持富文本编辑,同时也可以插入HTML代码...
Ability to place any block in any position by easily changing CMS page layout Unlimited number of blocks inside each position Unlimited number of content items inside each block Block items can ...
在这个主题中,“Create Dynamic CMS Navigation For Magento Frontend”指的是在Magento的前端生成可以根据CMS页面自动生成的动态菜单。 在Magento中,静态菜单通常是通过后台管理界面手动创建和维护的,而动态...
总的来说,Magento的Full Page Cache插件结合Varnish Cache,能显著提升网站性能,降低服务器负载,为用户提供更流畅的浏览体验。正确配置和使用这些工具对于任何运行Magento电商平台的企业来说都是至关重要的,这也...
### Magento中文用户指南知识点概述 #### Magento简介 - **什么是Magento?** - Magento是一款基于开源技术构建的电子商务平台,为在线商家提供了前所未有的灵活性以及对电子商务网站外观、内容和功能的强大控制...
2 新颖的功能像是产品标签、多送货地址或产品比较系统等功能,您不需要支付额外的费用来取得,在现成的 Magento 系统中,您可以发现更多。3 专业与社群支援不像是其他的开放原始码解决方案, Magento 提供专业、可...
Magento官方中文语言包是针对中国用户或者需要中文界面的 Magento 商店特别制作的,它使得用户可以将原本英文的 Magento 系统界面翻译成中文,从而方便中国用户更好地管理和操作商店。 **Magento 的多语言支持** ...
1.7.0.0是Magento的一个版本,这个版本在2012年发布,引入了许多新特性,提升了性能,并优化了用户体验。针对中文用户,Magento 1.7.0.0提供了中文语言包,以便于在中国市场进行销售和服务。 "Magento1.7.0.0中文包...
像是产品标签、多送货地址或产品比较系统等功能,您不需要支付额外的费用来取得,在现成的 Magento 系统中,您可以发现更多。 3 专业与社群支援 不像是其他的开放原始码解决方案, Magento 提供专业、可信赖的支援...
1. 商品管理:Magento允许商家方便地添加、编辑和管理商品信息,包括库存、价格、描述、图片等。 2. 多店铺支持:一个Magento安装可以管理多个独立店面,共享后台数据和设置。 3. 客户管理:提供客户分组、购物历史...
特征在CMS编辑表单上,将图片上传器添加到Magento后端在后端上传的图像可以在前端int的相应页面中查看易于在任何magento安装中使用安装✓通过作曲家安装在Magento 2根文件夹中运行以下命令: composer require ...
在Magento 1.6中,以下几个关键领域得到了显著增强: 1. **性能优化**:Magento 1.6对数据库查询进行了优化,提高了页面加载速度,降低了服务器资源消耗,提升了购物体验。 2. **订单处理**:引入了多地址配送功能...
在描述中,只提到了"magento1.6.1简体中文语言包最新",这可能意味着该语言包是针对Magento 1.6.1版本的最新更新,提供了完整的简体中文翻译,确保用户界面、帮助文档以及错误提示等全部内容都已汉化。 标签中的...
在描述中,提到了这个语言包是最新版的,意味着它包含了Magento 1.7.0.2的所有更新和改进,并且附带了两种语言包的安装方法,这对于初次接触Magento或者不熟悉系统设置的用户来说,是非常有价值的资源。 标签中,...
你可以在这里添加、编辑商品信息,包括价格、库存、描述等;处理订单状态,包括付款、发货、退款等操作;还可以创建促销规则,如优惠券、满减活动等。 三、Magento的主题与模板定制 Magento允许商家自定义店面主题...
在安装汉化包时,用户需要按照特定的步骤进行,通常包括解压文件、上传到服务器的指定目录、然后在Magento后台进行语言选择设置,确保系统识别并应用新的语言包。 值得注意的是,汉化不仅仅是简单的文字翻译,还...