Magento cms页面呈现{{}}个变量

时间:2011-02-16 14:45:07

标签: templates variables magento content-management-system render

magento中{{}}的位置 - 变量完全取代了?文件?

2 个答案:

答案 0 :(得分:14)

这些模板变量称为模板指令。每个人都有一个不同的方法来负责渲染它。例如,小部件指令

{{widget ...}}

widgetDirective类上呈现Mage_Widget_Model_Template_Filter方法。

class Mage_Widget_Model_Template_Filter extends Mage_Cms_Model_Template_Filter
{
    ...
    public function widgetDirective($construction)
    {
    }
    ...
}

而var指令

{{var ...}}

varDirective方法

处理
class Mage_Core_Model_Email_Template_Filter extends Varien_Filter_Template
{
    public function varDirective($construction)
    {
        ...
    }
}   

每个人都在不同的班级。每当Magento想要添加指令时,它们就会出现,它们会扩展旧的过滤器类,并添加新的指令方法。然后,用于创建过滤器对象的类是可配置的。据我所知,有四种不同的上下文,Magento需要做一个模板指令变量替换。

  1. 目录内容

  2. CMS页面内容

  3. CMS静态阻止内容

  4. 简报内容

  5. Magento将用于此的过滤器类别别在

    配置
    global/catalog/content/template_filter
    global/cms/page/template_filter
    global/cms/block/template_filter
    global/newsletter/template_filter
    

    搜索<template_filter/>的所有config.xml文件,您可以看到正在使用哪个类别名来实例化过滤器对象。 (您可以使用ack-grep -i 'template_filter' --xml $MAGENTOfind $MAGENTO -type f -name '*.xml' -exec grep -Hn 'template_filter' {} \;查找包含该字符串的$MAGENTO中的所有文件。

答案 1 :(得分:0)

看起来Mage_Cms_Block_Page::_toHtml()Mage_Cms_Block_Block::_toHtml()来电Mage_Cms_Model_Template_Filter::filter(string)。这个类和多个级别的父类通过几个函数解析字符串。