magento中{{}}的位置 - 变量完全取代了?文件?
答案 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需要做一个模板指令变量替换。
目录内容
CMS页面内容
CMS静态阻止内容
简报内容
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 $MAGENTO
或find $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)
。这个类和多个级别的父类通过几个函数解析字符串。