Sergey |
|
---|---|
Так уж принято кем-то и везде, что выражение в шаблоне (template) стоящие в фигурных скобках это тег. Тег (Tag), это то, что должен заменить парсер (часть шаблонизатора). Такое разделение шаблона и программных модулей сделано специально, чтобы программист выполнял свою часть, а скинмейкер свою: творил скины ( кожу - skin). Тег имеет имя, вместо которого парсер подставляет значение. В cotonti принято, что, что-то написанное большими буквами стоящим в фигурных скобках, а затем в шаблоне, то это тег, который формируется парсером, например, так:
$t->parse("MAIN.LIST_ROW"); где MAIN это префикс всех тегов в главной части шаблона, отвечающие выражению LIST_ROW и дальше, т.е "LIST_ROW_URL" => $pag['page_pageurl'],
"LIST_ROW_ID" => $pag['page_id'],
"LIST_ROW_CAT" => $pag['page_cat'],
"LIST_ROW_KEY" => htmlspecialchars($pag['page_key']),
"LIST_ROW_TITLE" => htmlspecialchars($pag['page_title']),
"LIST_ROW_DESC" => $pag['page_desc'],
"LIST_ROW_DESC_OR_TEXT" => sed_cutpost($pag['page_text'], 200, false),
"LIST_ROW_AUTHOR" => htmlspecialchars($pag['page_author']),
"LIST_ROW_OWNER" => sed_build_user($pag['page_ownerid'], htmlspecialchars($pag['user_name'])),
"LIST_ROW_DATE" => @date($cfg['formatyearmonthday'], $pag['page_date'] + $usr['timezone'] * 3600),
"LIST_ROW_FILEURL" => empty($pag['page_url']) ? '' : sed_url('page', 'id='.$pag['page_id'].'&a=dl'),
"LIST_ROW_SIZE" => $pag['page_size'],
"LIST_ROW_COUNT" => $pag['page_count'],
"LIST_ROW_FILEICON" => $pag['page_fileicon'],
"LIST_ROW_FILECOUNT" => $pag['page_filecount'],
"LIST_ROW_JUMP" => sed_url('page', $page_urlp.'&a=dl'),
"LIST_ROW_COMMENTS" => $pag['page_comments'],
"LIST_ROW_RATINGS" => $list_ratings,
"LIST_ROW_ADMIN" => $pag['admin'],
"LIST_ROW_ODDEVEN" => sed_build_oddeven($jj),
"LIST_ROW_NUM" => $jj PHP.имя_переменной.ассоциативный_код вот пример из шаблона list.tpl <tr>
<td class="coltop">{LIST_TOP_TITLE} {LIST_TOP_COUNT}</td>
<td class="coltop" style="width:96px;">{PHP.L.Comments}</td>
<td class="coltop" style="width:96px;">{PHP.L.Ratings}</td>
<td class="coltop" style="width:96px;">{LIST_TOP_DATE}</td>
<td class="coltop" style="width:128px;">{LIST_TOP_AUTHOR}</td>
</tr> Все теги которые не были "запарсены" префиксно, парсятся в конце модуля оператором $t->parse("MAIN"); а выводится во внешний поток (на экран юзера) оператором $t->out("MAIN"); Надо помнить, что сколько раз вы включили $t->parse() столько раз, эта часть шаблона парсится. Так получаются таблицы. Вот этот участок в list.inc.php $t-> assign(array(
"LIST_ROWCAT_URL" => sed_url('list', 'c='.$i),
"LIST_ROWCAT_TITLE" => $x['title'],
"LIST_ROWCAT_DESC" => $x['desc'],
"LIST_ROWCAT_ICON" => $x['icon'],
"LIST_ROWCAT_COUNT" => $sub_count,
"LIST_ROWCAT_ODDEVEN" => sed_build_oddeven($kk),
"LIST_ROWCAT_NUM" => $kk,
));
/* === Hook - Part2 : Include === */
if (is_array($extp))
{ foreach($extp as $k => $pl) { include($cfg['plugins_dir'].'/'.$pl['pl_code'].'/'.$pl['pl_file'].'.php'); } }
/* ===== */
$t->parse("MAIN.LIST_ROWCAT"); $t->vars["ИМЯ_ТЕГА"] if (isset($mesg_elink) and !empty ($mesg_elink)) // сообщение на странице отображения элемента
{
if (isset($t->vars["PAGE_MSG"]))
{
$t->vars["PAGE_MSG"] .= "<br />".$mesg_elink;
}
else
{
$t->assign(array("PAGE_MSG" => $mesg_elink));
}
} Впрочем ссылка на шаблонизатор уже приведена. www.cotonti.mobi
|