Templates Magento cms页面呈现{{}变量
在magento中,{{}}变量在哪里被完全替换?文件?它看起来像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
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需要在四种不同的上下文中替换模板指令变量
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团队的一个输入错误。