Magento cms рендеринг страницы {{}} переменные - PullRequest
4 голосов
/ 16 февраля 2011

Где в magento точно заменяются {{}} - переменные?Файл

Ответы [ 2 ]

14 голосов
/ 16 февраля 2011

Эти переменные шаблона называются директивами шаблона.У каждого есть свой метод, который отвечает за его рендеринг.Например, директива виджета

{{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 необходимо выполнять замену переменных директивы шаблона.

  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 $MAGENTO или find $MAGENTO -type f -name '*.xml' -exec grep -Hn 'template_filter' {} \;, чтобы найти все файлы в $MAGENTO, содержащие эту строку).

0 голосов
/ 16 февраля 2011

Похоже, Mage_Cms_Block_Page::_toHtml() и Mage_Cms_Block_Block::_toHtml() звонки Mage_Cms_Model_Template_Filter::filter(string).Этот класс и несколько уровней родительских классов анализируют строку через несколько функций.

...