<table>
<tmpl:TableCaption>
<tr>
<td>
-->>{TCaption}
</td>
</tr>
</tmpl:TableCaption>
<tmpl:TableRow>
<tr>
<td>
==>>{TCell}
</td>
</tr>
</tmpl:TableRow>
</table>
круто! кидай в меня шаблоном с описанием данных, которыми надо его набить. я тебе отвечу кодом для него.В связи с этим есть следующее предложение
я сейчас работаю над этим.. скоро будет и класс.этот модуль должен создавать ПХП объект совего класса
Комментарии в своих шаблонах я могу писать где угодно, всё что вне блоков игнорируется.
У меня нет никаких правил на создание переменной, имя переменной просто ассоциируется с её значение и в последствии заменяется им.
Я создаю переменные (их имена) в том виде в котором они лучше отображаются в шаблоне.
==============================
Блок верхушки таблици. Генерируется один раз.
Содержит следующие переменные:
"#DDDDDC"
™border
™x
"#CCCCCC"
"#FF0000"
™text
Все знаки кроме
пробелов принадлежат имени переменной.
В именах некотрых переменных есть спецсимволы
(для гарантированного отсутствия их в тексте).
<!-- START BLOCK0 -->
<br>
<table width="100%" border="0" cellspacing="0" cellpadding="0" bgcolor="#DDDDDC">
<tr>
<td>
<table width="100%" border=™border cellspacing="™x" cellpadding="4" bordercolor="#CCCCCC">
<tr>
<th bgcolor="#FF0000" colspan=6 >™text</td>
</tr>
<!-- END BLOCK0 -->
Следующий блок будет произвольно наращиваемым.
Проще всего передавать в командной строке параметр задающий
количество итераций цикла (количество сгенерированных блоков).
"#FFFFF1" - "#FFFFF6" заменяем на #1FFFF1,#F1FFF1,#FF1FF1,#FFF1F1,#FFFF11,#FFFFF1 соотвественно порядку.
перед запуском цикла создаём переменные для хранения ссылок, комментариев к ссылкам и текстов ссылок.
$hr = 'thjyrebgdhcnstrgvbjrukl';
$ti = 'kfyundtwrrgdlmdvstqrbdi';
$te = 'yetsbavcplftwbcmfyrthsb';
Дальше два варианта тестирования (можно также предусмотреть параметр командной строки).
1.
™hr1 - ™hr6 заменяем на $hr
™title1 - ™title6 заменяем на $ti
™text1 - ™text6 заменяем на $te
2. Все три переменные заменяем на инкриментирующийся $i из массива for($i=0;...;$i++)
Это наверное самый чистый тест реальной работы парсёра шаблонов.
<!-- START BLOCK1 -->
<tr>
<td bgcolor="#FFFFF1">
<div align="left"><b>
<a href="™hr1" title="™title1">™text1</a>
</b></div>
</td>
<td bgcolor="#FFFFF2">
<div align="left"><b>
<a href="™hr2" title="™title2">™text2</a>
</b></div>
</td>
<td bgcolor="#FFFFF3">
<div align="left"><b>
<a href="™hr3" title="™title3">™text3</a>
</b></div>
</td>
<td bgcolor="#FFFFF4">
<div align="left"><b>
<a href="™hr4" title="™title4">™text4</a>
</b></div>
</td>
<td bgcolor="#FFFFF5">
<div align="left"><b>
<a href="™hr5" title="™title5">™text5</a>
</b></div>
</td>
<td bgcolor="#FFFFF6">
<div align="left"><b>
<a href="™hr6" title="™title6">™text6</a>
</b></div>
</td>
</tr>
<!-- END BLOCK1 -->
Следующий блок, закрывает открытые таблици.
<!-- START BLOCK2 -->
</table>
</td>
</tr>
</table>
<!-- END BLOCK2 -->
У меня в код встроена приблуда измеряющая полное время парсировки шаблона и генерирования
из него кода (даже время генерирования кода из конкретного блока),
по ней можно точно сказать сколько времени работал парсёр шаблонов,
а сколько времени остальной код скрипта :).
<?php
include 'onk_tpl.php';
$mine_SH = new SHparser("test.htm");
$my_mark = new Time_mark();
if(isset($_GET['k'])){
$k = $_GET['k'];
}else{
$k = 0;
}
if(!empty($_GET['a'])){
$a = 1;
}else{
$a = 0;
}
$hr = 'thjyrebgdhcnstrgvbjrukl';
$ti = 'kfyundtwrrgdlmdvstqrbdi';
$te = 'yetsbavcplftwbcmfyrthsb';
if(!$a){
$mine_SH->add(array('"#DDDDDC"'=>'#DDDDDC','™border'=>1,'™x'=>4,'"#CCCCCC"'=>'#CCCCCC','"#FF0000"'=>'#FF0000','™text'=>'Заголовок'),0);
for($i=0;$i<$k;$i++){
$mine_SH->add(array('™hr1'=>$i,'™hr2'=>$i,'™hr3'=>$i,'™hr4'=>$i,'™hr5'=>$i,'™hr6'=>$i,'™title1'=>$i,'™title2'=>$i,'™title4'=>$i,'™title4'=>$i,'™title5'=>$i,'™title6'=>$i,'™text1'=>$i,'™text2'=>$i,'™text3'=>$i,'™text4'=>$i,'™text5'=>$i,'™text6'=>$i,'"#FFFFF1"'=>'#1FFFF1','"#FFFFF2"'=>'#F1FFF1','"#FFFFF3"'=>'#FF1FF1','"#FFFFF4"'=>'#FFF1F1','"#FFFFF5"'=>'#FFFF1F','"#FFFFF6"'=>'#FFFFF1'),1);
}
$mine_SH->add(array(),2);
$str = $mine_SH->show();
}else{
$mine_SH->add(array(),0);
for($i=0;$i<$k;$i++){
$mine_SH->add(array('™hr1'=>$hr,'™hr2'=>$hr,'™hr3'=>$hr,'™hr4'=>$hr,'™hr5'=>$hr,'™hr6'=>$hr,'™title1'=>$ti,'™title2'=>$ti,'™title4'=>$ti,'™title4'=>$ti,'™title5'=>$ti,'™title6'=>$ti,'™text1'=>$te,'™text2'=>$te,'™text3'=>$te,'™text4'=>$te,'™text5'=>$te,'™text6'=>$te,'"#FFFFF1"'=>'#1FFFF1','"#FFFFF2"'=>'#F1FFF1','"#FFFFF3"'=>'#FF1FF1','"#FFFFF4"'=>'#FFF1F1','"#FFFFF5"'=>'#FFFF1F','"#FFFFF6"'=>'#FFFFF1'),1);
}
$mine_SH->add(array(),2);
$str = $mine_SH->show();
}
echo $my_mark->current_time();
if(isset($_GET['f'])){
echo $str;
}
?>