Система шаблонов

Система шаблонов у Москита, довольно-таки, проста и непритязательна. Есть несколько файлов, которые отвечают за весь дизайн. Каждый файл отвечает за определенную часть страницы и, в зависимости от условий, могут показываться, а могут и нет. Т.е. форуму логина (и, соответственно, файл шаблона login_form.html) мы видим только тогда, когда пытаемся войти на сайт, как админ (в дальнейшем, возможно, и как зарегистрированный пользователь).

 В таблице представлен полный список необходимых файлов шаблона
head.html шапка, до вывода постов и прочего
footer.html низ, после вывода постов и прочего
comment_a.html вид комментариев автора блога
comment.html вид комментариев всех остальных
post_form.html форда добавления комментария
post.html вид записей
post_topic.html вид записей являющихся топиками
post_list.html вид записей при выводе списком
comment_form.html форма добавления комментариев
comment_last.html вид последних комментариев
day.html дата перед группой записей за один день
login_form.html форма логина

Во всех файлах можно использовать php код, вывод же переменных в php коде рекомендуется с использованием функции e, к примеру <?php e($var); ?>
Так же можно использовать системные функции и функции из плагинов

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

Файл post.html
Тут всё до наивности просто: есть несколько переменных
$post['title'] Заголовок записи
$post['text'] Собственно, сам текст записи (как до ката, так и полный)
$post['id'] ID записи, используется чаще всего для создания ссылок на запись <a href="<?php e(generate_link($post['id'])); ?>">текст ссылки</a>
$post['date'] Дата записи в формате определенном в конфиге
$post['c_count'] Колличество комментариев
$post['menu'] Вывод меню администратора (ссылки на удаление, редактирование записи и прочие)
Так же существую переменные из плагинов, к примеру $post['tags'] из плагина тегов (который, соответственно, выводит теги записи).
Комбинировать вывод всего этого можно как угодно в соответствии с вашим дизайном, но выводить переменные из плагинов лучше с использованием символа @ (т.е. <?php e(@post['tags']); ?>) дабы не было ошибки php если вдруг плагин отключен
Аналогично и в файле post_list.html

Файл comment.html и comment_a.html
$cmnt['nick'] Имя комментатора
$cmnt['text'] Текст комментария
$cmnt['date'] Время написания комментария
$cmnt['www'] url комментатора, если он указан
$cmnt['mail'] Email комментатора
$cmnt['num'] или $i Номер комментария, применяется для ссылок, к примеру ?<a name="comment-<?php e($cmnt['num']); ?>"></a> в шаблоне позволит из rss или из уведомления по email попадать сразу на нужный комментарий
$cmnt['link'] Готовая ссылка на комментарий
$cmnt['ip'] IP адрес комментатора, если указан
$cmnt['menu'] Меню администратора, по аналогии с меню в файле post.html
$cmnt['del_attach'] Меню администратора, по аналогии с меню в файле post.html
email, ip и меню лучше выводить только администратору (как это сделать ниже)
Так же присутствую переменные $cmnt['del_attach'], $_s['attach_dir'], $cmnt['attach'], $cmnt['attach_size'] для вложенных файлов, пример использования лучше посмотреть в умолчальном шаблоне

Файл date.html
Имеет всего одну переменную это $post_id от которой с помощью php образуется дата записей.
Можно использовать примерно так  <?php e(date("d-m-Y", $post_id)); ?>  или использовать другой формат вывода даты
В шаблоне по умолчанию вывод даты перед записями одного дня закомментирован.

Файлы head.html и footer.html
Переменные туда пихаются в основном из файла настроек, к примеру meta-теги, заголовок блога и прочее. К примеру
$_s['title'] — заголовок блога, $_s['blogdescription'] — описание блога, $_s['metakeywords'] — ключевые слова, $_s['moremeta'] — дополнительные мета-теги из плагинов
Так же в один из этих файлов (в зависимости от дизайна) не помешал бы вывод ссылок на страницы (следующая/предыдущая или список), а это переменная $_s['pages_link'] - которая выводит ссылки на страницы с сообщениями.

post_form.html и comments_form.html
Я рассматривать не буду, ибо там самое основное это сама форма, остальное не так критично, да и в большинстве уже имеющихся шаблонов эти формы абсолютно идентичны. На крайний случай вид форм и кнопок можно поменять таблицей стилей подключаемой в шапке.

Ну а теперь немного углубимся в создание шаблонов.

О некоторых моментах вроде функции e я уже сказал выше и упомянул о том что вывод чего-либо нужен только администратору. Для определения администратора в шаблоне можно использовать функцию is_admin() — эта функция проверяет, являетсь ли текущий пользователь администратором, или нет (true для админа иначе false). Используется, например, для вывода меню администратора в заметках и комментариях, давайте рассмотрим не примере.

<?php
	if(is_admin()) {
		 e($post['menu']); 
		 }
?>
 
В данном случае, мы выводим меню записи если только пользователь администратор (посмотрите умолчальный шаблон и блок админ-меню, там ещё несколько примеров использования) Так же стоит упомянуть о том что москит поддерживает локализацию, для этого, и если вы создаете шаблон только лишь для себя, тогда проблем при выводе текста нет - просто пишите необходимый текст. Но если вы хотите, чтобы этим шаблоном воспользовались другие, то всё же лучше использовать возможность Москита в поддержке нескольких языков.
Т.е. берем из языкового файла необходимые переменные и вставляем их туда, куда необходимо,
например, переменная $_l['comments'] в русском языке будет словом 'комментарии'
Полная возможность локализация всё ещё в процессе, так что просьба о всех проблемах с языком в шаблоне или о недостающих элементах перевода сообщить разработчикам.

И самое главное, в шаблоне можно использовать контейнеры выводящие блок,
т.е.
@container('header') выведет блок header.

Естественно, можно использовать не только контейнеры блоков идущие по умолчанию (footer, header, left, menu, pages, right/) но и создавать свои, т.е. в шаблоне можно использовать @container('hlam'), где hlam это имя контейнера (не забываем, что контейнер этот папка в data/blocks/ [в данном случае папка hlam], а все файлы, что в папке как-раз и выводятся сортируясь по имени — поэтому у них в начале цифры и присутствую для более явной визуализации сортировки)

Так же не стоит забывать о том что блоки по умолчанию имеют одинаковый вид <h6> заголовок блока</h6> и <div class="padd">тело  блока</div>
Думаю, что для создания своего уникального шаблона этих данных вполне хватит.


ЗЗЫ. На забываем о плагине fastpl для быстрой смены/редактирования шаблона. Если что-то не понятно, то автор готов уточнить непонятные моменты...