организация шаблонизатора для CMS

maxru

МИФИст
У меня почему-то вертится в голове только одно слово... XSL )
iceman, если готов потратить месяц-другой на освоение, то потрать - очень пригодится.
 

iceman

говнокодер
Шаблон:
PHP:
<table cellpadding="5" cellspacing="5" border=1 width="100%">
  <tr> 
    <td>
           <tpl:var>newsTitle</tpl>
           <tpl:var>Undefined_Var</tpl>

           <tpl:var >
                 newsTitle
           </tpl>
    </td>
  </tr>
  <tr> 
    <td>
           <tpl:var
           >news</tpl>
    </td>
  </tr>
</table>
Отпарсированный вариант:
PHP:
<table cellpadding="5" cellspacing="5" border=1 width="100%">
  <tr> 
    <td>
	<?=$TPL_newsTitle?>
	<tpl:var>Undefined_Var</tpl>
	<?=$TPL_newsTitle?>
    </td>
  </tr>
  <tr> 
    <td>
	<?=$TPL_news?>
    </td>
  </tr>
</table>
щас проблема в одном:
PHP:
while(!feof($tplFileRes)){
   
   /** Буффер */
   $buffer = fread($tplFileRes, 1024);        /*DEBUG*/@$buffer_sourse .= $buffer;
   $buffer = preg_replace($regs, $repls, $buffer);/*DEBUG*/@$buffer_parsed .= $buffer;

   /** Записываем все во временный фаил */
   fwrite($cacheFileRes, $buffer);
}
т.к. фаил парсируется по кусочкам, то возможеттакой исход:
- начальный тег будет прочитан (либо частично), а конечный вовсе нет, так же и переменная между ними..
это означает, что тег не будет превращен в php код...
Но читать фаил полностью тоже не хочится, т.к. - кто его знает каких рзмеров может быть шаблон...
может ктонибудь знет как выйти с такой ситуации... спаисбо...
 

Фанат

oncle terrible
Команда форума
а что это за шаблонизатор такой, который из псевдокода делает пхп код?
не многовато ли итераций?
 

iceman

говнокодер
вроде Smarty точно так же делает....
зачем мне самому парсировать переменные, когда это сделает php и быстрее...

после создания временнго файла я его подгружаю include();

не многовато ли итераций?
ты имеешь ввиду fread($tplFileRes, 1024);?
можно и увеличить

так же реализовал кеширование ...
 

Фанат

oncle terrible
Команда форума
зачем мне самому парсировать переменные
не понял.
а вот это - <tpl:var>newsTitle</tpl> - не переменная? или ты её не "парсируешь"? А кто же тогда?

Ты всю эту фигню сам придумал, или списал где?
 

iceman

говнокодер
парсирую... но не составляет труда заменить <tpl:var> на <?= и </tpl> на ?>

я перечитал книгу, раздел шаблонизатора там говрилось про трансляции кода шабллонизатора в PHP...

эту ф..гню сам написал...
 

Фанат

oncle terrible
Команда форума
а зачем?
почему нельзя сразу в шаблоне написать <?=$TPL_newsTitle?>
?
или, раз уж парсишь все равно, то сразу заменять на значение $TPL_newsTitle ?
 

iceman

говнокодер
когда я планировал все это, я не знал про параметр в рег.выражениях \e

щас до меня дошло, что вместо этого можно будет вставлять сразу значение +))

спасибо!

а зачем?
почему нельзя сразу в шаблоне написать <?=$TPL_newsTitle?>
говорят, дизайнерам трудно читать <?=$var?>
циклы, for($i=1;$i<10;$i++){} - полный набор символов...
хотя, мне вообще всеравно...
 

Фанат

oncle terrible
Команда форума
а <tpl:var>newsTitle</tpl> дизайнерам читать легче?

а вместо for($i=1;$i<10;$i++){} у тебя что в шаблоне?
 

hermit_refined

Отшельник
когда я планировал все это, я не знал про параметр в рег.выражениях \e
ну да, eval для замены каждой переменной резко повысит производительность и осмысленность.
вы как-то очень уж по-своему понимаете то, что вам пишут.
 

iceman

говнокодер
а вместо for($i=1;$i<10;$i++){} у тебя что в шаблоне?
еще нету, ну наверно <tpl:for...> ... </tpl>

надо сесть и подумать дальше...

а <tpl:var>newsTitle</tpl> дизайнерам читать легче?
откуда мне знать, я н дизайнер, и ведь уже написал что мне вообще всеравно...

ну да, eval для замены каждой переменной резко повысит производительность и осмысленность.
но тогд лудше вообще не заменять, а как было в php код...
хотя можно найти другой способ, правда щас в голову нечего не лезит...

для меня главной проблемой остается вот это http://phpclub.ru/talk/showthread.php?postid=704709#post704709

спасибо.
 

Фанат

oncle terrible
Команда форума
щас в голову нечего не лезит...
ну вот пойди отдохни, а потом приходи.
сейчас-то всё равно ничего в голову не полезет.
для меня главной проблемой остается вот это
ну, чужой проблемой оно всё равно не станет.
ты эту кашу заварил - ты и расхлебывай.
лично мне нет никакого интереса копаться в этом недошаблоне
 
Сверху