Темы

Структура папок темы

Тема состоит из следующих папок и файлов

/templates -- тут шаблоны для генерации страниц
  navigation.tset.phtml -- макет для построения меню
  index.tset.phtml -- макет для предметного указателя
  message.tpl.phtml -- макет для информационных сообщений системы
  master_layout.tpl.phtml -- содержит head секцию, общую для всех html файлов
  html_layout.tpl.phtml -- макет для стандартного отображения в html
  singlepage_content.tpl.phtml -- макет для страницы внутри монолитного html-файла
  singlepage_layout.tpl.phtml -- макет монолитного html-файла
  chm_layout.tpl.phtml -- макет страницы для вывода в chm

/web -- тут картинки, иконки, css, javasript

Макет представляет из себя фрагмент html-текста со вставками переменных в виде:

<?php echo $content; ?>

Макеты для стандартного вывода (html) и CHM

В макетах master_layout.tpl.phtml, html_layout.tpl.phtml, singlepage_content.tpl.phtml, chm_layout.tpl.phtml доступны следующие переменные:

path
Путь до текущей страницы. Например, layout/teme.html
bookTitle
Название книги
bookData
Содержит массив из параметров, заданных в book_data.yml
pageData
Содержит массив из параметров страницы в структуре книги
rootPath
Ссылка на корневую директорию книги. По адресу $rootPath.'index.html' расположена обложка
rootURL
Ссылка на страницу обложки книги: $rootPath.'index.html'
bookShelfURL
Ссылка на страницу книжной полки
editURL
Ссылка на интерфейс правки текущей страницы
editTocURL
Ссылка на интерфейс правки структуры книги
assetsURL
Ссылка на директорию с картинками, стилями и js
level
Уровень страницы в дереве. 0 -- корневой уровень
next
Массив, содержащий название и ссылку на следующую страницу. Элементы массива: title, href. Имеет значение null, если следующей страницы нет
prev
Массив, содержащий название и ссылку на предыдущую страницу. Элементы массива: title, href. Имеет значение null, если предыдущей страницы нет
menu
Меню текущего уровня
upLevelLink
Ссылка на родительский раздел
upTitle
Массив, названий родительских разделов
curTitle
Заголовок текущей страницы
content
Обработанное содержимое страницы
mode
Режим работы системы: экспорт в статику (static) или веб-сервер (server)
editMode
Истинно, если отображается окно редактирования текста
outputMode
Режим вывода: html (стандартный), html_single (в один большой файл), chm (в проект chm)

Особенности вывода в один html-файл

Для вывода в один html-файл нужен еще один макет, — singlepage_layout.tpl.phtml. Внутри него доступны переменные:

content
Отформатированное содержимое всех страниц книги
bookData
Содержит массив из параметров, заданных в book_data.yml

Кроме того, в макете master_layout.tpl.phtml, доступны только:

assetsURL
Ссылка на директорию с картинками, стилями и js
bookTitle
Название книги
outputMode
Режим вывода: html (стандартный), html_single (в один большой файл), chm (в проект chm)
content
Отформатированное содержимое

Макет навигации

Макет навигации расположен в файле navigation.tset.phtml, и представляет из себя шаблон с секциями. Система обращается к секциям при построении навигационных фрагментов. Макет имеет вид:

<!-- #menu_topic# -->
<li><a href='<?php echo $href ?>'><?php echo $title; ?></a></li>
<!-- #active_menu_topic# -->
<li class='active'><?php echo $title ?></li>
<!-- #toc_topic# -->
<div style='margin-top: 7px;margin-left: <?php echo 20*$level; ?>px'>
<a href='<?php echo $href ?>'><?php echo $title; ?></a>
</div>
<!-- #toc# -->
<div style='margin-top: 0px;margin-left: 40px'><?php echo $content; ?></div>

Во всех секциях доступна переменная outputMode — режим вывода (html, html_single, chm)

В секциях пунктов меню и пунктов оглавления (menu_topic, active_menu_topic, toc_topic) доступны ссылка ($href) и название пункта меню ($title). В секции макета оглавления (toc) доступно содержимое оглавления ($content). В этой секции задаются блоки, которые окружают оглавление.

Макет предметного указателя

Макет содержится в файле index.tset.phtml, который имеет вид:

<!-- #indexTopic# -->
<p style='margin: 0'>
<?php echo $word; ?> <span style='font-size: x-small'>
<?php foreach ($pages as $page): ?>
[<?php echo "<a href='$rootPath{$page['path']}'>".$page['title']."</a>" ?>] 
<?php endforeach; ?>
</span>
</p>

<!-- #indexSection# -->
<div style="margin-top: 30px">
<p style="font-weight: bold;margin-bottom: 5px"><?php echo strtoupper($curLetter); ?></p>
<?php echo $buffer; ?>
</div>

Во всех секциях доступна переменная outputMode — режим вывода (html, html_single, chm)

В разделе indexTopic доступны переменные:

word
ключевое слово
pages
массив страниц, соответствующих ключевому слову. Каждый элемент содержит заголовок страницы (title) и путь к ней (path)
rootPath
URL начала книги, таким образом полный URL страницы формируется так: $rootPath.$page['path']

В разделе indexSection доступны переменные $curLetter (буква, на которую начинаются ключевые слова) и $buffer, содержащая сформированный блок из ключевых слов.

Макет для информационных сообщений

Этот макет предназначен для того, чтобы вывести сообщение вроде "Индекс успешно построен" и кнопку "Назад". В макете доступны переменные:

assetsURL
URL папки, где находятся иконки, стили, javascript темы
bookTitle
Название книги
errstatus
Статус сообщения: error, notice или success
message
Само сообщение
backLink
Адрес страницы, выдавшей данное сообщение

Обертки для строковых функций

Для того, чтобы Ваша тема поддерживала обычные кодировки и utf-8, для преобразования строк пользуйтесь функциями-обертками

 
//перевод в нижний регистр
function colesoStrToLower($str);
 
//перевод в верхний регистр
function colesoStrToUpper($str);
 
//подстрока, 
//если length==null, то будет взята подстрока до конца строки
function colesoSubstr($str, $start,$length=null);

© H-type, 2008
www.bulldoc.ru