

<u>Сразу нужно отметить, что в Eleanor CMS предусмотено ДВА шаблонизатора: HTML и PHP</u>. Первый полезен для простых файлов шаблона; второй же для более изощренного и более гибкого использования всех наворотов верстальщика. Тип шаблонизатора определяется типом файла, если найдено два файла для обеих шаблонизаторов (например Base.php и Base.html), предпочтение отдается HTML шаблонизатору (Base.html). На шаблонизаторе PHP я детально останавливаться не буду - использует он синтаксис PHP и тем, кто уже сталкивался с такими шаблонизаторами все должно быть предельно понятно.
Детальнее рассмотрю HTML шаблонизатор.
1. Переменные в шаблонизаторе выделяются в фигурные скобки. Например {title}, {text}.. И вставляются в нужных местах шаблона.
2. Логические выражения имеют синтаксис [переменная]ДА[-переменная]НЕТ[/переменная]. При этом секцию [-переменная] можно опустить. Например:
[title]{title}[-title]Заголовка нет![/title]
Логика работы этого куска очень просто: если заголовок есть - он будет выведен, если он пустой - будет выведена строка "Заголовка нет".
Имена переменных НЕ чувствительны к регистру.
Важно отметить, что в обоих шаблонизаторах есть несколько нестандартных переменных:
<?php echo$HEAD?> (всегда большими буквами) - сгенерированная секция <head><?php echo$HEAD?></head>. Содержит meta атрибуты, стили, RSS ссылки.
{module} (всегда маленьки буквами) - содержимое, которое сгенерирует модуль.
Обе этих переменных не поддерживают логические условия. Т.е. Вы не можете записать [module]...[/module]
Также еще есть переменные [blocks_ТипБлока][/blocks_ТипБлока] чтобы можно было узнать, есть ли на странице блоки какого-то определенного типа.
И так рассмотрим детальнее это на примерах:
1) <u>index.php</u>:
Пожалуй начнем с разбора аргументов и функций:
{%BLOCKS admin%} - верхняя админ панель.Аргумент может быть установлен в любом удобном месте, желательно конечно сверху.
{%BLOCKS top_menu%} - верхнее меню с ссылкамии (Главная,FAQ,Новости,Аккаунт).
{%BLOCKS center_up%} - верхние центральные блоки.
{module} - модуль, загружаемый на главной странице (центр. блоки) - стандартный загрузочный модуль - Новости.
{%BLOCKS center_down%} - нижние центральный блоки.
{%BLOCKS right%} - правые блоки.
{%BLOCKS left%} - левые блоки.
{%STATIC login%} - блок статистического логина (может быть слева и\или справа).
{%BLOCKS bottom_menu%} - нижнее меню с ссылками (Главная,FAQ,Новости,Аккаунт).
<?=$copyright?> - копирайт системы.
{page status} - время генерации.
А теперь разберем конкретный пример на шаблоне Uniel:
<div id="maincol[blocks_right]R[/blocks_right]">
<div class="baseblock"><div class="dtop"><div class="dbottom">
<div class="dcont" id="resizedimage">
{%BLOCKS center_up%}
{module}
{%BLOCKS center_down%}
<script type="text/javacript">AddOnLoadEvent('ResizeBigImages(Id("resizedimage"),530,75)',true);</scrip</span>t>
</div>
</div></div></div>
</div>
[blocks_right]<div id="rightcol">
{%BLOCKS right%}
</div>[/blocks_right]
</div>
В системе есть функция проверки: если в модуле нету правых блоков, то центр. блоки автоматически должены растягиваться на 100%. За этот параметр отвечает функция [blocks_right] [/blocks_right]. А теперь понятнее:
<div id="maincol[blocks_right]R[/blocks_right]">
Див maincol будет грузиться если правые блоки отсутсвуют. Див maincolr будет грузиться если правые блоки присутствуют. Так же необходимя вставлять этот проверочный аргумент когда в шаблон вводяться правые блоки: [blocks_right]<div id="rightcol">{%BLOCKS right%}</div>[/blocks_right] .
2) <u>Base.html</u>:
Аргументы:
{title} - заголовок (новости).
{whopost} - кто разместил (ник).
{date} - дата размещения.
{comments} - кол-во коментариев к новости.
{category} - категория новости.
{content} - собственно содержание новости, тобишь контент.
{rating} - рейтинг новости.
{more} - ссылка "подробнее" (переход к полной новости).
Кокретный пример:
<div class="base">
<div class="heading"><div class="binner">
<h3>{title}</h3>
<div class="moreinfo">
<span class="arg">{whopost}</span>
<span class="arg">{date}</span>[comments]
<span class="arg">[b]{comments}[/b]</span>[/comments]
<span class="arg">{category}</span>
<div class="clr"></div>
</div>
<div class="clr"></div>
</div></div>
<div class="maincont"><div class="binner">
{content}
<div class="clr"></div>
</div></div>
<div class="morelink"><div class="binner">
<div class="ratebase">{rating}</div>
<span class="argmore">{more}</span>
<div class="clr"></div>
</div></div>
</div>
Аргумент {comments} должен выводиться с проверкой как и правые блоки, т.е. [comments]{comments}[/comments].
3) <u>Base--full.php</u>:
Аргументы:
<?=$title?> - заголовок (новости).
<?=$whopost?> - кто разместил (новость).
<?=$date?> - дата публикации.
<?=(isset($category) ? $category : '')?> - категория (новости).
<?=$content?> - содержание (новости).
<?php if(!empty($tags)): ?><br /><br /><?php echo $Mainclass->lang['main']['tags'].': '.$tags; endif?> - теги (новости).
<?php if($moder): ?><?=$moder?><?php endif?> - модераторские опции (изменение,удаление (новости)).
<?=$rating?> - рейтинг (новости).
4) <u>Comment.php</u>:
Аргументы:
<?=$comment_id?> - номер коментария.
<?=$avatar?><?php if($a_width):?>width="<?=$a_width?>" <?php endif?><?php if($a_height):?>height="<?=$a_height?>" <?php endif?> - автар пользователя + проверка высоты и ширины аватара.
<?=$name?> - имя пользователя.
<?=$link_to?> - ссылка на коментарий.
<?=$text?> - собственно сам коментарий.
<?=$signature?> - подпись пользователя.
<?php if ($profile):?><a href="#" onclick="if (act_editor) eval(act_editor+'.SetSelectedText(\'<b><?=$name?>,\')'); return false;"><?=$name?></a><?php else:?><?=$name; endif;?><?=$lang['writes'];?> - вставить ник в форму поста коментария.
<?php
echo $dates; - дата коментария.
if ($profile)
echo ' | <a href="'.$profile.'">'.$lang['profile'].'</a>'; - ссылка на профиль.
if ($icq)
echo ' | ICQ: '.$icq; - icq пользователя.
if ($yahoo)
echo ' | '.$yahoo; - yahoo пользователя.
if ($msn)
echo ' | '.$msn; - msn пользователя.
if ($website)
echo ' | '.$website; - сайт пользователя.
if ($ip)
echo ' | '.$ip; - ip адрес пользователя.
?>
<?php if ($moder):?>
<a href="#" onclick="return <?=$u?>.Delete(<?=$comment_id?>);"> - удалить коментарий
<a href="#" onclick="return <?=$u?>.Edit(<?=$comment_id?>);"> - редактировать коментарий
<?php endif?>
<?php if ($answer_to):?>
<a href="#" onclick="return <?=$u?>.AnswerTo(<?=$comment_id?>,<?=$n?>);"> - цитата коментария.
<?php endif?>
<span style="color:#FF0000">Внимание! Аргументы с внедрением php элементов (начинаються с <?php) нельзя разрывать дивами, т.е. они должны быть одним целым, пример:
<?php
echo $dates;
if ($profile)
echo ' | <a href="'.$profile.'">'.$lang['profile'].'</a>';
if ($icq)
echo ' | ICQ: '.$icq;
if ($yahoo)
echo ' | '.$yahoo;
if ($msn)
echo ' | '.$msn;
if ($website)
echo ' | '.$website;
if ($ip)
echo ' | '.$ip;
?>
Во всех файлах PHP шаблониазтора переменные выводятся как <?=$varname?>, кроме переменных {module}, <?php echo$HEAD?> и блоков. Все переменные ХТМЛ шаблониазтора выводятся как {varname}. Пример (ввода шаблона): {theme} для HTML и <?=$theme?> для PHP.
И так господа спасибо за внимание. Если вы прочитали этот топик, то вы хотите чему-то научиться и сделать это самому, а это меня радует

Обновил до 5 рцшки.