sigma - вложенные блоки

  • Автор темы Igor Ageyev
  • Дата начала

Igor Ageyev

Guest
sigma - вложенные блоки

Пользуюсь шаблонным движком HTML_Template_Sigma.
Не могу понять, почему не разбираются вложенные блоки шаблона;( Если верить документации, то анализироваться они должны.

Подскажите в чем могут быть грабли?
Привожу упрощенный пример кода:

******** файл test.php ***************
PHP:
<?php
require_once 'HTML/Template/Sigma.php';
$tpl =& new HTML_Template_Sigma();
$tpl->loadTemplateFile('test.tpl');

// посчитаем от 0 до 9
for ($num=0; $num<10; $num++) {
    // задаем значение переменным шаблона
    $tpl->setVariable('number', $num);
	// Следующая строка не выполняется!!!!!!!!!!!!!
	// Вложенный блок 'inner' не анализируется;(
	$tpl->parse('inner');
    // разбирает внешний блок
    $tpl->parse('outer');
}
// выводим шаблон
$tpl->show();
?>
*********** файл test.tpl **************
PHP:
<!-- BEGIN outer -->
    {number}<br/>
    <!-- BEGIN inner -->
	ЭТОТ БЛОК НЕ ВЫВОДИТСЯ
    <!-- END inner -->
<!-- END outer -->
-~{}~ 24.07.05 15:28:

Проблему разрешил;)
Грабли были не во вложенности блока "inner", а в том, что он не содержал никаких данных (плейсхолдеров, блоков).

Для разбора таких блоков нужно использовать метод touchBlock() вместо parse().

Т.е. вместо строки $tpl->parse('inner'); нужно поместить $tpl->touchBlock('inner');

Зачем было усложнять класс sigma, добавлением отдельного метода для пустых блоков? (для меня это загадка).

Кто нибудь пользуется этим шаблонным движком?
 

Lord Micro

Guest
Re: sigma - вложенные блоки

Автор оригинала: Igor Ageyev
Пользуюсь шаблонным движком HTML_Template_Sigma.
Не могу понять, почему не разбираются вложенные блоки шаблона;( Если верить документации, то анализироваться они должны.

Подскажите в чем могут быть грабли?
Привожу упрощенный пример кода:

******** файл test.php ***************
PHP:
<?php
require_once 'HTML/Template/Sigma.php';
$tpl =& new HTML_Template_Sigma();
$tpl->loadTemplateFile('test.tpl');

// посчитаем от 0 до 9
for ($num=0; $num<10; $num++) {
    // задаем значение переменным шаблона
    $tpl->setVariable('number', $num);
	// Следующая строка не выполняется!!!!!!!!!!!!!
	// Вложенный блок 'inner' не анализируется;(
	$tpl->parse('inner');
    // разбирает внешний блок
    $tpl->parse('outer');
}
// выводим шаблон
$tpl->show();
?>
*********** файл test.tpl **************
PHP:
<!-- BEGIN outer -->
    {number}<br/>
    <!-- BEGIN inner -->
	ЭТОТ БЛОК НЕ ВЫВОДИТСЯ
    <!-- END inner -->
<!-- END outer -->
-~{}~ 24.07.05 15:28:

Проблему разрешил;)
Грабли были не во вложенности блока "inner", а в том, что он не содержал никаких данных (плейсхолдеров, блоков).

Для разбора таких блоков нужно использовать метод touchBlock() вместо parse().

Т.е. вместо строки $tpl->parse('inner'); нужно поместить $tpl->touchBlock('inner');

Зачем было усложнять класс sigma, добавлением отдельного метода для пустых блоков? (для меня это загадка).

Кто нибудь пользуется этим шаблонным движком?
Я написал свои шаблоны, переработав(наверное просто звял идею) Sigma...могу поделиться. Свяжись по мылу со мной: [email protected]
 
Сверху