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.1249997107.txt.gz · Последнее изменение: 2009-08-11 15:25 — 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