Инструменты пользователя

Инструменты сайта


ru:devel:templates

Разработка шаблонов «Докувики»

:!: Страница нуждается в переработке. За точной информацией обращайтесь к английской версии страницы. :!:

Вы можете менять дизайн «Докувики» по своему усмотрению, создав новый шаблон, который представляет собой несколько PHP- и CSS-файлов, сохранённых в каталоге и помещённых в <dokuwiki>/lib/tpl/ (в действительности, шаблон написан на HTML, а PHP используется только для вставки контента).

Начало работы

Проще всего создать новый шаблон, взяв в качестве отправной точки уже существующий. Лучше всего подойдет шаблон «default», так как он содержит все необходимые части шаблона и следует стандартам составления шаблонов «Докувики». Название шаблона (каталога) следует писать в нижнем регистре без символов точки и подчеркивания.

  1. Скопируйте стандартный шаблон lib/tpl/default в каталог, где будет хранится ваш шаблон, например lib/tpl/mytemplate;
  2. Выберите новый шаблон на странице «Управление»;
  3. Ознакомьтесь с файлами шаблона (см. «Структуру каталогов»);
  4. Посмотрите, как «Докувики» обрабатывает CSS с помощью диспетчера CSS;
  5. Обработка конфигурационных параметров аналогична плагинам. Используйте tpl_getConf(<setting>) для получения параметров шаблона.

Структура каталогов

Шаблоны должны иметь следующую структуру директорий (все пути указаны относительно каталога шаблона). Файлы CSS определены в style.ini, но вам следует предоставить как минимум два файла: один основной, другой для вывода на печать.

Функции

Список доступных функций вы можете найти здесь: API documentation. Самые важные приведены ниже.

tpl_content()

Эта функция выводит тело страницы, другими словами, всё содержимое страницы, включая содержание (TOC). Вы можете отключить вывод содержания вызовом функции с параметром false:

tpl_content(false);

Такой приём может использоваться для размещения содержания в другой части экрана. См. функцию tpl_toc().

tpl_toc()

По умолчанию, функция tpl_content() сама позаботится о выводе содержания, приводя его в актуальное состояние. Если ваш шаблон использует боковую колонку или более сложную компоновку, у вас может появится желание разместить содержание независимо от содержимого страницы. Это можно сделать функцией tpl_toc(). При её использовании важно запретить автоматическое размещение содержания вызовом функции tpl_content() с аргументом false.

Пример:

<div id="content">
    <?php tpl_content(false)?>
</div>
 
<div id="sidebar">
    <?php tpl_toc()?>
</div>

Функция tpl_toc() формирует содержание на основе трёх различных источников: глобальной переменной $TOC, метаданных страницы или метода административных плагинов getTOC(). В случае, когда нет доступных метаданных старых ревизий или предварительных просмотров, tpl_toc() может использовать только глобальную переменную $TOC. Если же $TOC перезаписана формирователем страницы, то tpl_toc() будет работать только при условии её вызова после tpl_content(). Если подобное невозможно разметке вашего шаблона, вы можете использовать буферизацию вывода для обхода этой проблемы.

Пример:

<?php
    // помещает содержимое страницы в буфер для последующего использования
    ob_start();
    tpl_content(false);
    $buffer = ob_get_clean();
?>
 
<div id="sidebar">
    <?php tpl_toc()?>
</div>
 
<div id="content">
    <?php echo $buffer?>
</div>

tpl_getConf()

Функция используется для доступа к конфигурационным параметрам из шаблона.

Глобальные переменные и константы

Полный список глобальных переменных и констант вы можете найти на странице «Окружение».

Автоматизация служебных операций

Почти в самом конце страницы main.php стандартного шаблона вы можете увидеть вызов функции tpl_indexerWebBug(). Данная функция генерирует HTML-тег <img>, который является результатом запроса к скрипту lib/exe/indexer.php. Эта необходимая составляющая часть «Докувики» выполняет важные служебные функции, обеспечивающие правильную работу системы. Все шаблоны должны включать в себя эту функцию, без неё работа вики может быть нарушена (к примеру, поисковые индексы перестанут создаваться)

Класс «dokuwiki»

Следует добавить класс dokuwiki к некоторым «окружающим контент» элементам (либо вокруг всего текста, либо по крайней мере, вокруг tpl_content()) в каждом из шаблонов main.php, detail.php и mediamanager.php. Это необходимо для того, чтобы быть уверенным в том, что стили «Докувики» не пересекаются с другими стилями при интеграции с существующим сайтом, содержащим потенциально конфликтующие CSS.

Включаемые блоки

Включаемые блоки — простой путь добавления различного статического контента в вашу «Докувики» без создания собственного шаблона. Вы можете использовать их для добавления стандартного заголовка или логотипа компании на каждую страницу, либо же для размещения информации об отказе от ответственности внизу страницы.

Стандартный шаблон «Докувики» ищет файлы со специальными именами в каталоге lib/tpl/default/ и просто включает их в определённые места при отображении страницы. Вы вольны добавить любой HTML-код в эти файлы. Конечно, работать это будет лишь при использовании стандартного шаблона.

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

Доступные блоки

Все файлы размещаются в каталоге lib/tpl/default/

Имя файла Позиция включения
meta.html Внутри HTML-тега <head>, используйте для подключения дополнительных таблиц стилей или метазаголовков
topheader.html В самом верху страницы, сразу после тега <body>
header.html Выше верхней синей панели, ниже названия страницы и заголовка вики
pageheader.html Ниже полоски посещенных страниц, выше основного содержания страницы
pagefooter.html Выше нижней голубой панели, ниже отметки о последнем изменении
footer.html В самом низу страницы, перед тегом </body>

«Докувики» поставляется с образцом файла footer.html, содержащим кнопки лицензии «Creative Commons RDF».

ru/devel/templates.txt · Последние изменения: 2016-03-24 14:35 — Aleksandr