回答

0

它看起來像Mage_Cms_Block_Page::_toHtml()Mage_Cms_Block_Block::_toHtml()調用Mage_Cms_Model_Template_Filter::filter(string)。這個類和多級父類通過幾個函數解析字符串。

14

這些模板變量被稱爲模板指令。每個人都有一個負責渲染的方法。例如,窗口小部件的指令

{{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想要添加指令時,它們都會出現,它們會擴展舊的過濾器類,並添加新的指令方法。然後,用於創建過濾器對象的類是可配置的。據我所知,有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 

搜索所有的config.xml爲<template_filter/>文件,你可以看到哪些類別名被用來實例化濾鏡對象。 (您可以使用ack-grep -i 'template_filter' --xml $MAGENTOfind $MAGENTO -type f -name '*.xml' -exec grep -Hn 'template_filter' {} \;查找包含該字符串的$MAGENTO中的所有文件)。

+0

好一個艾倫,這聽起來像您必須剛剛做了一大堆的研究部件:d – 2011-02-16 23:19:58