Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates Magento cms页面呈现{{}变量_Templates_Variables_Magento_Content Management System_Render - Fatal编程技术网

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

Templates Magento cms页面呈现{{}变量,templates,variables,magento,content-management-system,render,Templates,Variables,Magento,Content Management System,Render,在magento中,{{}}变量在哪里被完全替换?文件?它看起来像Mage\u Cms\u Block\u页面::\u toHtml()和Mage\u Cms\u Block\u Block::\u toHtml()调用Mage\u Cms\u Model\u Template\u Filter::Filter(string)。此类和多级父类通过几个函数解析字符串。这些模板变量称为模板指令。每一个都有一个不同的方法负责渲染它。例如,widget指令 {{widget ...}} 在Mage\u

在magento中,{{}}变量在哪里被完全替换?文件?

它看起来像
Mage\u Cms\u Block\u页面::\u toHtml()
Mage\u Cms\u Block\u Block::\u toHtml()
调用
Mage\u Cms\u Model\u Template\u Filter::Filter(string)
。此类和多级父类通过几个函数解析字符串。

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

{{widget ...}}
Mage\u Widget\u Model\u Template\u Filter
类上使用
widgetDirective
方法呈现

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需要在四种不同的上下文中替换模板指令变量

  • 目录内容

  • CMS页面内容

  • 静态块内容

  • 通讯内容

  • 将用于此目的的筛选器类别名Magento配置为

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

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

    ,听起来你一定对widget做了大量的研究:只是做了一个小小的修改(模板的L不见了),这是magento团队的一个输入错误。