`
cgzhang
  • 浏览: 73431 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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页面时,会把上面的指示符替换为当前用户的相应属性。
1
1
分享到:
评论

相关推荐

    Magento在代码中调用CMS静态块 (Static Block)

    CMS静态块在Magento中通常用于展示重复使用的静态内容,如网站底部的友情链接、页眉页脚信息、公司简介等。这些静态块可以通过后端的“CMS &gt; 静态块”进行创建、编辑和管理,支持富文本编辑,同时也可以插入HTML代码...

    magento static block

    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 ...

    magento创建动态菜单 Create Dynamic CMS Navigation For Magento Frontend

    在这个主题中,“Create Dynamic CMS Navigation For Magento Frontend”指的是在Magento的前端生成可以根据CMS页面自动生成的动态菜单。 在Magento中,静态菜单通常是通过后台管理界面手动创建和维护的,而动态...

    magento 加速插件 full page cache 花了我几十美金买的

    总的来说,Magento的Full Page Cache插件结合Varnish Cache,能显著提升网站性能,降低服务器负载,为用户提供更流畅的浏览体验。正确配置和使用这些工具对于任何运行Magento电商平台的企业来说都是至关重要的,这也...

    magento中文用户指南

    ### Magento中文用户指南知识点概述 #### Magento简介 - **什么是Magento?** - Magento是一款基于开源技术构建的电子商务平台,为在线商家提供了前所未有的灵活性以及对电子商务网站外观、内容和功能的强大控制...

    Magento中文用户使用手册 中文教程

    2 新颖的功能像是产品标签、多送货地址或产品比较系统等功能,您不需要支付额外的费用来取得,在现成的 Magento 系统中,您可以发现更多。3 专业与社群支援不像是其他的开放原始码解决方案, Magento 提供专业、可...

    magento 官方中文语言包

    Magento官方中文语言包是针对中国用户或者需要中文界面的 Magento 商店特别制作的,它使得用户可以将原本英文的 Magento 系统界面翻译成中文,从而方便中国用户更好地管理和操作商店。 **Magento 的多语言支持** ...

    magento1.7.0.0中文包

    1.7.0.0是Magento的一个版本,这个版本在2012年发布,引入了许多新特性,提升了性能,并优化了用户体验。针对中文用户,Magento 1.7.0.0提供了中文语言包,以便于在中国市场进行销售和服务。 "Magento1.7.0.0中文包...

    Magento中文用户使用手册 中文教程.zip

    像是产品标签、多送货地址或产品比较系统等功能,您不需要支付额外的费用来取得,在现成的 Magento 系统中,您可以发现更多。 3 专业与社群支援 不像是其他的开放原始码解决方案, Magento 提供专业、可信赖的支援...

    magento中文手册.pdf

    1. 商品管理:Magento允许商家方便地添加、编辑和管理商品信息,包括库存、价格、描述、图片等。 2. 多店铺支持:一个Magento安装可以管理多个独立店面,共享后台数据和设置。 3. 客户管理:提供客户分组、购物历史...

    magento2-module-cmsbanner:magento 2扩展程序,用于向cms页面添加横幅

    特征在CMS编辑表单上,将图片上传器添加到Magento后端在后端上传的图像可以在前端int的相应页面中查看易于在任何magento安装中使用安装✓通过作曲家安装在Magento 2根文件夹中运行以下命令: composer require ...

    magento 1.6 最新中文语言包

    在Magento 1.6中,以下几个关键领域得到了显著增强: 1. **性能优化**:Magento 1.6对数据库查询进行了优化,提高了页面加载速度,降低了服务器资源消耗,提升了购物体验。 2. **订单处理**:引入了多地址配送功能...

    magento1.6.1简体中文语言包最新

    在描述中,只提到了"magento1.6.1简体中文语言包最新",这可能意味着该语言包是针对Magento 1.6.1版本的最新更新,提供了完整的简体中文翻译,确保用户界面、帮助文档以及错误提示等全部内容都已汉化。 标签中的...

    Magento1.7.0.2中文语言包(简体+繁体)附有安装方法

    在描述中,提到了这个语言包是最新版的,意味着它包含了Magento 1.7.0.2的所有更新和改进,并且附带了两种语言包的安装方法,这对于初次接触Magento或者不熟悉系统设置的用户来说,是非常有价值的资源。 标签中,...

    Magento-中文开发教程.doc

    你可以在这里添加、编辑商品信息,包括价格、库存、描述等;处理订单状态,包括付款、发货、退款等操作;还可以创建促销规则,如优惠券、满减活动等。 三、Magento的主题与模板定制 Magento允许商家自定义店面主题...

    magento1.7后台香港繁体中文汉化

    在安装汉化包时,用户需要按照特定的步骤进行,通常包括解压文件、上传到服务器的指定目录、然后在Magento后台进行语言选择设置,确保系统识别并应用新的语言包。 值得注意的是,汉化不仅仅是简单的文字翻译,还...

Global site tag (gtag.js) - Google Analytics