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

tim*_*hka 4 variables templates render magento content-management-system

在magento的哪个地方是{{}} - 变量正好被取代了?文件?

Ala*_*orm 14

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

{{widget ...}}
Run Code Online (Sandbox Code Playgroud)

widgetDirectiveMage_Widget_Model_Template_Filter类上呈现方法.

class Mage_Widget_Model_Template_Filter extends Mage_Cms_Model_Template_Filter
{
    ...
    public function widgetDirective($construction)
    {
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

而var指令

{{var ...}}
Run Code Online (Sandbox Code Playgroud)

varDirective方法处理

class Mage_Core_Model_Email_Template_Filter extends Varien_Filter_Template
{
    public function varDirective($construction)
    {
        ...
    }
}   
Run Code Online (Sandbox Code Playgroud)

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

  1. 目录内容

  2. CMS页面内容

  3. CMS静态阻止内容

  4. 通讯内容

Magento将使用的过滤器类别别配置为

global/catalog/content/template_filter
global/cms/page/template_filter
global/cms/block/template_filter
global/newsletter/template_filter
Run Code Online (Sandbox Code Playgroud)

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