DokuWiki

It's better when it's simple

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

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


ru:devel:templates

Это старая версия документа!


Разработка шаблонов DokuWiki

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

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

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

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

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

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

  • <dokuwiki>/lib/tpl/<template>/
    • <filename>.css
    • main.php – главный файл разметки шаблона DokuWiki
    • detail.php – страница подробного описания изображения
    • mediamanager.php – мультимедия загрузчик
    • images/ – все используемые в шаблоне изображения
    • conf/
    • lang/ – языковые файлы
      • <код языка>/lang.php – локализованные строки, используемые в шаблоне
      • <код языка>/settings.php – локализованные строки, используемые на странице настроек DokuWiki
    • style.ini – см. Style.ini

Функции

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

tpl_content()

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

tpl_content(false);

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

tpl_toc()

По умолчанию, функция tpl_content() сама позаботится о выводе Содержания, приводя его в актуальное состояние. Если ваш шаблон использует боковую колонку или более сложную компоновку, у вас может появится желание разместить TOC независимо от содержимого страницы. Это можно сделать функцией tpl_toc(). При её использовании важно запретить автоматическое размещение 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 без создания собственного шаблона. Вы можете использовать их для добавления стандартного заголовка или логотипа компании на каждую страницу, либо же для размещения информации об отказе от ответственности внизу страницы.

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

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

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

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

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

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

ru/devel/templates.1249997369.txt.gz · Последнее изменение: 2009-08-11 15:29 — 195.78.91.218

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki