HTML_Template_Sigma VS Smarty

trompert

Guest
HTML_Template_Sigma VS Smarty

Всю жизнь пользуюсь смарти, но в последнее время как-то лень его ставить. а Pear-овские шаблонизаторы - в этом смысле поудобнее. Кто-то использует HTML_Template_Sigma и вообще шаблоны из PEAR?
СтОит ли? и почему? спасибо за ответы.
 

Макс

Старожил PHPClub
я сигму использую
Почему ? Этот класс удовлетовряет мои программерские потребности. Считаю что шаблоны должны быть простыми как двери, чтобы даже тупому дизайнеру можно было в них разобраться. Свое мнение никому не навязываю, и спорить не собираюсь

Стоит ли его использовать тебе ? Не знаю. Зависит от твоих требований к шаблонизатору
 

lucas

Guest
но в последнее время как-то лень его ставить. а Pear-овские шаблонизаторы - в этом смысле поудобнее
Чем удобнее? Точнее, чем НЕудобнее Смарти?
 

Bermuda

Новичок
Сигму использую, но никому не советую

1. Есть баги.

2. Нелогичное поведение класса

3. Что-то мне еще там не нравилось, вспомню -- напишу.
Вспомнил, в обратном порядке парсятся вложенные блоки, что тоже странно.

Примеры:

Если в секции не определить переменную, то секция не выводится, что нелогично.

Гораздо удобнее делать hide секции тогда когда она не нужна, чем делать touch тогда когда нужна.

После парсинга секции использованные в ней переменные магическим образом исчезают.

Насчет багов. На днях обнаружили конкретный глюк который проявляется в отпарсенном шаблоне при определенных условиях. Шаблон простой как 2х2, все перерыли -- ошибки ни в коде, ни в шаблоне не нашли. Так и оставили.

К этому поведению приходится подстраиваться, жить можно, но неудобно и нелогично. Чем обусловленно такое странное поведение я не знаю, в нутро не лазил и нет никакого желания править класс, так как при обновлении это придется делать снова.
 

Макс

Старожил PHPClub
Если в секции не определить переменную, то секция не выводится, что нелогично.
сначало тоже удивился, сейчас привык, даже удобно стало :)
После парсинга секции использованные в ней переменные магическим образом исчезают.
пример можно ?

-~{}~ 22.06.04 20:30:

с багами можно обращаться к разарботчикам классов. Обычно они их исправляют (если это действительно баги)
Примерно год использую - на баги не наталкивлся (пока)
 

Bermuda

Новичок
Да, конечно

Темплет
-----------------------------------------------------------------------------
Код:
<!-- BEGIN GRUPOS_LISTADO -->
<tr>
	<td><a href="{URL_VER}" title="{TIT_VER}">{EMAILDIRECCIONES_NOMBRE}</a>&nbsp;&nbsp;({EMAILDIRECCIONES_TOTAL})</td>
	<td>{EMAILDIRECCIONES_DESCRIPCION}</a></td>
	<td>{EMAILDIRECCIONES_TIPO}</a></td>
	<td><a href="{URL_COPIAR}" title="{TIT_COPIAR}">{COPIAR}</a></td>
	<td><a href="{URL_BORRAR}" title="{TIT_BORRAR}" onclick="return delete_confirmation()">{BORRAR}</a></td>
	<td><a href="{URL_MODIFICAR}" title="{TIT_MODIFICAR}">{MODIFICAR}</a></td>
</tr>
<!-- END GRUPOS_LISTADO -->
<!-- BEGIN GRUPOS_LISTADO_2 -->
<tr>
	<td><a href="{URL_VER}" title="{TIT_VER}">{EMAILDIRECCIONES_NOMBRE}</a>&nbsp;&nbsp;({EMAILDIRECCIONES_TOTAL})</td>
	<td>{EMAILDIRECCIONES_DESCRIPCION}</a></td>
	<td>{EMAILDIRECCIONES_TIPO}</a></td>
	<td><a href="{URL_COPIAR}" title="{TIT_COPIAR}">{COPIAR}</a></td>
	<td><a href="{URL_BORRAR}" title="{TIT_BORRAR}" onclick="return delete_confirmation()">{BORRAR}</a></td>
	<td><a href="{URL_MODIFICAR}" title="{TIT_MODIFICAR}">{MODIFICAR}</a></td>
</tr>
<!-- END GRUPOS_LISTADO_2 -->
Вот так не работает. Отображает только первую секцию.
PHP:
$this->setVariable(
	array(
		// Campos que se muestran
		"EMAILDIRECCIONES_TOTAL"		=> $grupo["EMAILDIRECCIONES_TOTAL"],
		"EMAILDIRECCIONES_NOMBRE"		=> $grupo["EMAILDIRECCIONES_NOMBRE"],
		"EMAILDIRECCIONES_DESCRIPCION"	=> $grupo["EMAILDIRECCIONES_DESCRIPCION"],
		"EMAILDIRECCIONES_TIPO"			=> $conf->getText("TIPO_".$grupo["DINAMICO"]),
		"URL_MODIFICAR"					=> $grupo["URL_MODIFICAR"],
		"URL_VER"						=> $grupo["URL_VER"]
		)
	);
$this->parse("GRUPOS_LISTADO");
$this->parse("GRUPOS_LISTADO_2");
Вот так работает. отображает обе секции.
PHP:
$this->setVariable(
	array(
		// Campos que se muestran
		"EMAILDIRECCIONES_TOTAL"		=> $grupo["EMAILDIRECCIONES_TOTAL"],
		"EMAILDIRECCIONES_NOMBRE"		=> $grupo["EMAILDIRECCIONES_NOMBRE"],
		"EMAILDIRECCIONES_DESCRIPCION"	=> $grupo["EMAILDIRECCIONES_DESCRIPCION"],
		"EMAILDIRECCIONES_TIPO"			=> $conf->getText("TIPO_".$grupo["DINAMICO"]),
		"URL_MODIFICAR"					=> $grupo["URL_MODIFICAR"],
		"URL_VER"						=> $grupo["URL_VER"]
		)
	);
$this->parse("GRUPOS_LISTADO");

$this->setVariable(
	array(
		// Campos que se muestran
		"EMAILDIRECCIONES_TOTAL"		=> $grupo["EMAILDIRECCIONES_TOTAL"],
		"EMAILDIRECCIONES_NOMBRE"		=> $grupo["EMAILDIRECCIONES_NOMBRE"],
		"EMAILDIRECCIONES_DESCRIPCION"	=> $grupo["EMAILDIRECCIONES_DESCRIPCION"],
		"EMAILDIRECCIONES_TIPO"			=> $conf->getText("TIPO_".$grupo["DINAMICO"]),
		"URL_MODIFICAR"					=> $grupo["URL_MODIFICAR"],
		"URL_VER"						=> $grupo["URL_VER"]
		)
	);
$this->parse("GRUPOS_LISTADO_2");
Зачем два раза переопределять массив совершенно непонятно. Ну да ладно.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Bermuda
Сигму использую, но никому не советую

1. Есть баги.
Пока есть слова. Баги будут здесь: http://pear.php.net/package/HTML_Template_Sigma/bugs

Вспомнил, в обратном порядке парсятся вложенные блоки, что тоже странно.
Что значит "в обратном порядке"? :confused:

Если в секции не определить переменную, то секция не выводится, что нелогично.

Гораздо удобнее делать hide секции тогда когда она не нужна, чем делать touch тогда когда нужна.

После парсинга секции использованные в ней переменные магическим образом исчезают.
Ну это и есть отличительные особенности движка. Каковые, впрочем, отключаются.

Насчет багов. На днях обнаружили конкретный глюк который проявляется в отпарсенном шаблоне при определенных условиях. Шаблон простой как 2х2, все перерыли -- ошибки ни в коде, ни в шаблоне не нашли. Так и оставили.
Ещё раз, чтобы было совсем понятно. Такого плана заявления хороши после отправки баг-репорта. Пока же это звучит как "я нашёл чудовищную ошибку, но никому про неё не расскажу. сами поищите, помучайтесь, хе-хе." У слушателей же возникает мысль, что либо никакой ошибки вовсе нет, и говорящий издевается, либо ему влом минимально помочь людям, которые уже помогли ему, написав программу.
 

Demiurg

Guest
>но в последнее время как-то лень его ставить
мотивация достовить, особенно, если учесть, что вся установка - это кобирование файлов.
 

Bermuda

Новичок
Ок, будем называть вещи своими именами. Не баг, а глюк. Повторить ошибку удается, но не удается понять при каких ИМЕННО данных она вопроизводится. Скажем так, в переменную помещаем 5 -- есть ошибка, помещаем 3 -- нету ошибки.

>> Ну это и есть отличительные особенности движка. Каковые, впрочем, отключаются.

Пример можно? Будь добр, приведи пример как я могу из моего класса отключить это поведение не правя настройки самого класса из PEAR. Мне бы это очень пригодилось. Заранее благодарен.

Лично мне _кажется_ нелогичным переопределять второй раз массив после парсинга.

>> Что значит "в обратном порядке"?
Это значит, что по логике вещей сначала должна парсится вложенная секция, а потом наружная. У сигмы наоборот.

Насчет багрепортов я вообще ничего не говорил. Успокойте фантазию. В данном случае пока нет времени делать баг-репорты, хотя стоило бы, будет свободная минутка обязательно сделаю, а пока, увы, времени нет.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Bermuda
Ок, будем называть вещи своими именами. Не баг, а глюк. Повторить ошибку удается, но не удается понять при каких ИМЕННО данных она вопроизводится. Скажем так, в переменную помещаем 5 -- есть ошибка, помещаем 3 -- нету ошибки.
...
Насчет багрепортов я вообще ничего не говорил. Успокойте фантазию. В данном случае пока нет времени делать баг-репорты, хотя стоило бы, будет свободная минутка обязательно сделаю, а пока, увы, времени нет.
ОК, назовём вещи своими именами: проблема непонятного происхождения, внятно описать которую ты не в состоянии. При этом ранее в треде утверждалось:
Претензия моя ясна?

Пример можно? Будь добр, приведи пример как я могу из моего класса отключить это поведение не правя настройки самого класса из PEAR. Мне бы это очень пригодилось. Заранее благодарен.
http://pear.php.net/manual/en/package.html.html-template-sigma.html-template-sigma.loadtemplatefile.php
третий параметр в false, и уборка пустых блоков будет отключена.

Лично мне _кажется_ нелогичным переопределять второй раз массив после парсинга.
В принципе можешь попробовать setGlobalVariable().

Но это на самом деле фича, чтобы на второй итерации блока у тебя вдруг не выползли переменные, оставшиеся от первой.

>> Что значит "в обратном порядке"?
Это значит, что по логике вещей сначала должна парсится вложенная секция, а потом наружная. У сигмы наоборот.
Тут две проблемы:
1) которая из вложенных секций?
2) обратная совместимость (с HTML_Template_IT).

в общем, если нужен определённый порядок парсинга, то парсить блоки надо вручную.
 

trompert

Guest
Originally posted by Demiurg
>но в последнее время как-то лень его ставить
мотивация достовить, особенно, если учесть, что вся установка - это кобирование файлов.
Да, но просматривая репозитарий иногда возникает мысль, а вдруг все уже пользуются суперским шаблонизатором, а я как дурак в 19 веке, со смарти. Однако посмотрев обсуждение, желание делать сайт на сигме как-то отпало.

-~{}~ 23.06.04 16:28:

Originally posted by lucas
Чем удобнее? Точнее, чем НЕудобнее Смарти?
всем удобнее.. просто нового захотелось.. :)
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: trompert
Да, но просматривая репозитарий иногда возникает мысль, а вдруг все уже пользуются суперским шаблонизатором, а я как дурак в 19 веке, со смарти.
Живущие в 21ом веке массово переползают на WACT. :p
 

Bermuda

Новичок
Автор оригинала: Sad Spirit
Претензия моя ясна?
Притензии? Ко мне? Увольте! Человек спросил мнения. Я свое мнение высказал. От темы не будем отпользать, а?

http://pear.php.net/manual/en/package.html.html-template-sigma.html-template-sigma.loadtemplatefile.php
третий параметр в false, и уборка пустых блоков будет отключена.
Спасибо. То что надо. Принимаю слова назад. У нас враппер между сигмой и другими классами.

В принципе можешь попробовать setGlobalVariable().

Но это на самом деле фича, чтобы на второй итерации блока у тебя вдруг не выползли переменные, оставшиеся от первой.
Спасибо, попробую. Фича сомнительная. Я присвоил переменные, пропарсил, а они исчезли. Я ведь "такой команды не давал". ;)

Тут две проблемы:
1) которая из вложенных секций?
2) обратная совместимость (с HTML_Template_IT).
Есть секция А, в ней содержится секция Б. Секция А парсится N раз и за каждую итерацию секции А в ней парсится M раз вложенная секция Б. Так вот я наступал на грабли, что нужно сначала пропарсить А, а потом Б. Выкручивался тем, что брал результат парсинга секции Б в перемнную и парсил его в сецкии А. Короче, что-то там не парсилось. Начинал я (ногами не пинайте) с фасттеплетов. Там все просто и логично, но о-о-о-о-чень медленно. По идеологии сравниваю с фасттемплетами.
 
Сверху