在magento中,{{ }}-variables被准确地替换了吗?文件?
发布于 2011-02-16 23:58:32
这些模板变量称为模板指令。每种方法都有不同的方法来渲染它。例如,widget指令
{{widget ...}}在Mage_Widget_Model_Template_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想要添加一个指令时,它就会出现,它们扩展了旧的filter类,并添加了新的指令方法。然后,用于创建过滤器对象的类是可配置的。据我所知,Magento需要在四个不同的上下文中进行模板指令变量替换。
将用于此目的的过滤器类别名Magento的配置位置为
global/catalog/content/template_filter
global/cms/page/template_filter
global/cms/block/template_filter
global/newsletter/template_filter在您的所有config.xml文件中搜索<template_filter/>,您可以看到哪个类别名正用于实例化filter对象。(您可以使用ack-grep -i 'template_filter' --xml $MAGENTO或find $MAGENTO -type f -name '*.xml' -exec grep -Hn 'template_filter' {} \;在$MAGENTO中查找包含该字符串的所有文件)。
发布于 2011-02-16 23:07:51
看起来Mage_Cms_Block_Page::_toHtml()和Mage_Cms_Block_Block::_toHtml()调用了Mage_Cms_Model_Template_Filter::filter(string)。这个类和多个级别的父类通过几个函数解析字符串。
https://stackoverflow.com/questions/5017826
复制相似问题