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

  • Автор темы Автор темы iceman
  • Дата начала Дата начала
У меня почему-то вертится в голове только одно слово... XSL )
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 код...
Но читать фаил полностью тоже не хочится, т.к. - кто его знает каких рзмеров может быть шаблон...
может ктонибудь знет как выйти с такой ситуации... спаисбо...
 
а что это за шаблонизатор такой, который из псевдокода делает пхп код?
не многовато ли итераций?
 
вроде Smarty точно так же делает....
зачем мне самому парсировать переменные, когда это сделает php и быстрее...

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

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

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

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

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

эту ф..гню сам написал...
 
а зачем?
почему нельзя сразу в шаблоне написать <?=$TPL_newsTitle?>
?
или, раз уж парсишь все равно, то сразу заменять на значение $TPL_newsTitle ?
 
когда я планировал все это, я не знал про параметр в рег.выражениях \e

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

спасибо!

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

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

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

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

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

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

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