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

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


devel:templates

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

devel:templates [2023/09/02 17:37] – создано vladpolskiydevel:templates [Дата неизвестна] (текущий) – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1
Строка 1: Строка 1:
-====== Разработка шаблонов «Докувики» ====== 
  
-:!: Страница нуждается в переработке. За точной информацией обращайтесь к [[devel:templates|английской версии страницы]]. :!: 
- 
-Вы можете менять дизайн «[[..:dokuwiki|Докувики]]» по своему усмотрению, создав новый шаблон, который представляет собой несколько PHP- и CSS-файлов, сохранённых в каталоге и помещённых в ''<dokuwiki>/lib/tpl/'' (в действительности, шаблон написан на HTML, а PHP используется только для вставки контента). 
- 
- 
-===== Начало работы ===== 
- 
-Проще всего создать новый шаблон, взяв в качестве отправной точки уже существующий. Лучше всего подойдет шаблон «default», так как он содержит все необходимые части шаблона и следует стандартам составления шаблонов «Докувики». Название шаблона (каталога) следует писать в нижнем регистре без символов точки и подчеркивания. 
- 
-  - Скопируйте стандартный шаблон ''lib/tpl/default'' в каталог, где будет хранится ваш шаблон, например ''lib/tpl/mytemplate''; 
-  - Выберите новый шаблон на странице «Управление»; 
-  - Ознакомьтесь с файлами шаблона (см. «[[templates#структура каталогов|Структуру каталогов]]»); 
-  - Посмотрите, как «Докувики» обрабатывает CSS с помощью [[..:devel:css|диспетчера CSS]]; 
-  - Обработка конфигурационных параметров аналогична [[common_plugin_functions|плагинам]]. Используйте ''%%tpl_getConf(<setting>)%%'' для получения параметров шаблона. 
- 
- 
-===== Структура каталогов ===== 
- 
-Шаблоны должны иметь следующую структуру директорий (все пути указаны относительно каталога шаблона). Файлы CSS определены в ''[[CSS#style.ini]]'', но вам следует предоставить как минимум два файла: один основной, другой для вывода на печать. 
- 
-  * ''<dokuwiki>/lib/tpl/<template>/'' 
-    * ''<filename>.css'' 
-    * ''[[.:templates:main.php]]'' ([[devel:templates:main.php|англ.]]) --- главный файл разметки шаблона «Докувики» 
-    * ''[[.:templates:detail.php]]'' ([[devel:templates:detail.php|англ.]]) --- страница подробного описания изображения 
-    * ''[[.:templates:mediamanager.php]]'' ([[devel:templates:mediamanager.php|англ.]]) --- медиаменеджер 
-    * ''images/'' --- все используемые в шаблоне изображения 
-    * ''conf/'' 
-      * ''default.php'' --- [[.:configuration#настройки_по_умолчанию|стандартные настройки]] (см. ''[[#tpl_getConf]]'') 
-      * ''metadata.php'' --- [[.:configuration#метаданные_настроек|конфигурационные метаданные]] (см. ''[[#tpl_getConf()]]'') 
-    * ''lang/'' --- языковые файлы 
-      * ''<код языка>/lang.php'' --- локализованные строки, используемые в шаблоне 
-      * ''<код языка>/settings.php'' --- локализованные строки, используемые на странице настроек «Докувики» 
-    * ''style.ini'' --- см. [[.:css#style.ini]] 
- 
- 
-===== Функции ===== 
- 
-Список доступных функций вы можете найти здесь: [[xref>inc/template.php|API documentation]]. Самые важные приведены ниже. 
- 
- 
-==== tpl_content() ==== 
- 
-Эта функция выводит тело страницы, другими словами, всё содержимое страницы, включая [[..:toc|содержание]] (TOC). Вы можете отключить вывод содержания вызовом функции с параметром ''false'': 
- 
-<code php> 
-tpl_content(false); 
-</code> 
- 
-Такой приём может использоваться для размещения содержания в другой части экрана. См. функцию ''[[#tpl_toc()]]''. 
- 
- 
-==== tpl_toc() ==== 
- 
-По умолчанию, функция ''[[#tpl_content()]]'' сама позаботится о выводе [[..:TOC|содержания]], приводя его в актуальное состояние. Если ваш шаблон использует боковую колонку или более сложную компоновку, у вас может появится желание разместить содержание независимо от содержимого страницы. Это можно сделать функцией ''tpl_toc()''. При её использовании важно запретить автоматическое размещение содержания вызовом функции ''tpl_content()'' с аргументом ''false''. 
- 
-**Пример:** 
- 
-<code php> 
-<div id="content"> 
-    <?php tpl_content(false)?> 
-</div> 
- 
-<div id="sidebar"> 
-    <?php tpl_toc()?> 
-</div> 
-</code> 
- 
-Функция ''tpl_toc()'' формирует содержание на основе трёх различных источников: глобальной переменной [[..:devel:environment#$TOC]], [[..:metadata|метаданных]] страницы  или метода [[..:devel:admin plugins|административных плагинов]] ''getTOC()''. В случае, когда нет доступных [[..:metadata|метаданных]] старых ревизий или предварительных просмотров, ''tpl_toc()'' может использовать только глобальную переменную [[..:devel:environment#$TOC]]. Если же [[..:devel:environment#$TOC]] перезаписана формирователем страницы, то ''tpl_toc()'' будет работать только при условии её вызова **после** ''tpl_content()''. Если подобное невозможно разметке вашего шаблона, вы можете использовать буферизацию вывода для обхода этой проблемы. 
- 
-**Пример:** 
- 
-<code php> 
-<?php 
-    // помещает содержимое страницы в буфер для последующего использования 
-    ob_start(); 
-    tpl_content(false); 
-    $buffer = ob_get_clean(); 
-?> 
- 
-<div id="sidebar"> 
-    <?php tpl_toc()?> 
-</div> 
- 
-<div id="content"> 
-    <?php echo $buffer?> 
-</div> 
-</code> 
- 
- 
-==== tpl_getConf() ==== 
- 
-Функция используется для доступа к [[..:devel:configuration|конфигурационным параметрам]] из шаблона. 
- 
- 
-===== Глобальные переменные и константы ===== 
- 
-Полный список глобальных переменных и констант вы можете найти на странице «[[..:devel:environment|Окружение]]». 
- 
- 
-===== Автоматизация служебных операций ===== 
- 
-Почти в самом конце страницы ''[[..:devel:templates:main.php]]'' стандартного шаблона вы можете увидеть вызов функции ''tpl_indexerWebBug()''. Данная функция генерирует HTML-тег ''<img>'', который является результатом запроса к скрипту ''[[..:indexer|lib/exe/taskrunner.php]]''. Эта необходимая составляющая часть «Докувики» выполняет важные служебные функции, обеспечивающие правильную работу системы. Все шаблоны должны включать в себя эту функцию, без неё работа вики может быть нарушена (к примеру, [[..:search|поисковые индексы]] перестанут создаваться) 
- 
- 
-===== Класс «dokuwiki» ===== 
- 
-Следует добавить класс ''dokuwiki'' к некоторым «окружающим контент» элементам (либо вокруг всего текста, либо по крайней мере, вокруг ''tpl_content()'') в каждом из шаблонов ''main.php'', ''detail.php'' и ''mediamanager.php''. Это необходимо для того, чтобы быть уверенным в том, что стили «Докувики» не пересекаются с другими стилями при интеграции с существующим сайтом, содержащим потенциально конфликтующие CSS.  
- 
- 
-===== Включаемые блоки ===== 
- 
-Включаемые блоки --- простой путь добавления различного статического контента в вашу «Докувики» без создания собственного [[..:template|шаблона]]. Вы можете использовать их для добавления стандартного заголовка или логотипа компании на каждую страницу, либо же для размещения информации об отказе от ответственности внизу страницы. 
- 
-Стандартный шаблон «Докувики» ищет файлы со специальными именами в каталоге ''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». 
-https://www.dokuwiki.org/ru:devel:templates 
devel/templates.1693665468.txt.gz · Последнее изменение: vladpolskiy