DokuWiki

It's better when it's simple

Користувальницькі налаштування

Налаштування сайту


uk:devel:templates

Це стара версія документу!


Розробка Шаблону DokuWiki

Ви можете налаштувати дизайн DokuWiki створивши новий шаблон. Шаблон визначається переважно деякими PHP і CSS файлами, збереженими в каталозі поза <dokuwiki>/lib/tpl/.

Початок Роботи

Найлегший спосіб створення нового шаблону - це взяти вже існуючий як вихідну точку. Це добра ідея використовувати стартовий шаблон, оскільки він чистий і відповідає стандартам шаблонів DokuWiki.

  1. Встановіть шаблон starter (опціонально, його гілка “minimal” є чистою вихідною точкою)
  2. Перейменуйте каталог lib/tpl/starter на lib/tpl/yourname
  3. Виберіть новий шаблон у менеджері конфігурації
  4. Потім змініть свій шаблон на ваш смак; щоб зрозуміти, як створюються шаблони DokuWiki, подивіться на файли шаблону та як DokuWiki обробляє CSS
  5. Коли ваш шаблон буде готовий, розгляньте можливість опублікувати його на сторінці шаблони DokuWiki.

Конвенції назв шаблонів

Дійсна назва шаблону (каталогу):

  • Має містити лише символи a-z та 0-9.
  • Крапка '.', дефіс '-' та підкреслення '_' не дозволяються через:
    • Інфраструктура DokuWiki не підтримує їх ніде.
    • Використання підкреслення також призведе до рейтингу популярності нуль.
  • Пропуски ' ' також не дозволяються в основному імені шаблону, визначеному в template.info.txt і назві папки, включаючи назву сторінки, використану у переліку шаблонів наприклад, template:myfirsttemplate.
  • Якщо два різних шаблони використовують одну й ту ж назву
    • вони взаємно виключаються та несумісні за своєю природою,
    • більше того, лише один з них може мати домашню сторінку шаблону на dokuwiki.org.

Важливо мати унікальне базове значення поля (тобто назву шаблону) в template.info.txt, оскільки інакше може бути перезаписаний вже існуючий шаблон з такою назвою.

Структура директорії

Шаблони повинні дотримуватися такої структури директорій (всі шляхи відносяться до директорії шаблону).

Файли CSS вказуються в файлі style.ini. Використовуйте стільки файлів, скільки потрібно, але ви маєте як мінімум надати один CSS-файл для відображення на екрані і один для друку.

  • <dokuwiki>/lib/tpl/<template>/
    • <filename>.cssстилі шаблону (якщо надано більше ніж кілька, має сенс групувати їх у підкаталог css/)
    • script.js – опціонально, якщо вашому шаблону потрібен JavaScript
    • main.php – загальна структура DokuWiki
    • detail.php – сторінка детальної інформації про зображення
    • mediamanager.php – вибір медіа-файлів
    • images/ – всі зображення, використані у шаблоні (якщо є)
    • conf/ – файли конфігурації (опціонально, якщо використовується конфігурація)
    • lang/ – файли мови
      • <lang code>/lang.phpлокалізаційні рядки, використані у шаблоні (опціонально, використовуйте, коли потрібно)
      • <lang code>/settings.php – локалізаційні рядки, використані у Менеджері конфігурації (якщо використовується конфігурація)
    • style.ini – див. style.ini
    • favicon.ico – фавікон (може бути змінений, завантаживши інший в корінь або простір імен wiki, коли використовується tpl_favicon())
    • template.info.txt – Текстовий файл з інформацією про шаблон обов'язково!

Обробка налаштувань конфігурації аналогічна плагінам. Використовуйте tpl_getConf(<setting>) для отримання власних налаштувань шаблону. Збережені місцеві налаштування зберігаються у глобальному файлі conf/local.php DokuWiki.

Inner workings explained

Functions

A list of available functions can be found in API documentation. Some specialities are listed here.

  • tpl_content()
    This function outputs the page body, or in other words the content of your wiki page, including the TOC. You can prevent it from outputting the TOC by passing false while calling it:
    tpl_content(false);

    This can be used to separate the TOC from the content and place it somewhere else on the screen. See tpl_toc() below for further details.

  • tpl_toc()
    By default, the tpl_content() function will take care of displaying a Table of Contents itself, prepending it to the actual page content. If your template uses a sidebar or other more complex layout you may want to place the TOC independently from the page content. This can be done with the tpl_toc() function. When using it, it is important to disable automatic TOC placement by passing the argument false to the tpl_content() function.

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

Функція tpl_toc() відображає зміст з трьох різних джерел: глобальної змінної $TOC, метаданих сторінки або методу getTOC() admin plugins. Оскільки для старих ревізій або попереднього перегляду немає доступних метаданих, tpl_toc() може використовувати лише глобальну змінну $TOC для цих випадків. Оскільки змінна $TOC заповнюється відтворювачем сторінки, це буде працювати лише тоді, коли tpl_toc() викликається після tpl_content(). Якщо це неможливо в макеті вашого шаблону, ви можете використовувати буферизацію виведення для обходу цієї проблеми.

Приклад:

<?php
    // render the content into buffer for later use
    ob_start();
    tpl_content(false);
    $buffer = ob_get_clean();
?>
 
<div id="sidebar">
    <?php tpl_toc()?>
</div>
 
<div id="content">
    <?php echo $buffer?>
</div>
  • Крім того, доступно багато інших корисних функцій шаблону. Будь ласка, перегляньте документацію API.

Глобальні змінні та константи

Для повного списку корисних глобальних змінних та констант дивіться сторінку environment.

Автоматизоване прибирання

Майже внизу файлу main.php шаблону за замовчуванням ви побачите виклик функції tpl_indexerWebBug(). Ця функція генерує тег HTML <img>, що призводить до запиту до lib/exe/taskrunner.php. Ця важлива частина DokuWiki виконує важливу роботу щодо підтримки порядку, щоб вікі працювала безперебійно. Усі шаблони повинні включати цю функцію, без неї вікі може працювати некоректно (наприклад, індекс пошук може не будуватися).

Клас 'dokuwiki'

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

Включальні Гаки (Hooks)

Включальні Гаки (Hooks) - це простий спосіб додати який-небудь статичний вміст до вашої DokuWiki інсталяції, не писати свій власний Template. Ви можете використовувати їх для додавання стандартного заголовка вгорі або відомостей про відмову внизу кожної сторінки.

Шаблон за замовчуванням DokuWiki шукає файли зі спеціальними назвами в каталозі шаблону і просто додає їх на відповідні місця при відображенні сторінки. Ви можете додавати будь-який HTML або навіть PHP в ці файли. Звичайно, це працює тільки в разі використання шаблону dokuwiki або шаблону, що підтримує ті самі включальні гаки (наприклад, стартовий шаблон).

Конвертація існуючих шаблонів

Якщо вам не вистачає навичок дизайну, ви також можете конвертувати існуючі шаблони. Існує багато безкоштовних варіантів. Якщо ви хочете опублікувати один з них, будь ласка, переконайтеся, що він сумісний з GPL2.

Уникання проблем

Ось деякі проблеми, з якими стикаються розробники шаблонів, та як їх уникнути:

Не розміщуйте команди JavaScript у тегу <body> сторінки

Це включає onLoad та інші. Хоча порушення цього правила не впливає на FireFox зовсім, Internet Explorer (навіть IE 7) матиме помилки JavaScript через необхідний для редагування сторінки JavaScript, і це може призвести до сторінок, які відображатимуться неправильно, а також ви можете помітити, що панель редагування буде відсутня, коли вам це знадобиться.

Вимкніть "Компактні CSS- та JavaScript-файли" під час розробки шаблону

Деякі розробники шаблонів стикаються з проблемами кешування CSS- та JS-файлів DokuWiki через цю опцію, хоча її важко виявити. Щоб бути в безпеці, тимчасово вимкніть це.

Використовуйте "примусове оновлення" після внесення змін до файлів CSS

Ви можете це зробити, натиснувши Ctrl+F5 або утримуючи натиснутими клавіші Shift-Control-Alt і натисканням кнопки оновлення у вашому браузері.

Це не пов'язано з тим, як працює DokuWiki, а з тим, як сучасні браузери кешують файли. Браузери кешують таблиці стилів навіть тоді, коли доступні нові версії, тому вам потрібно це зробити.

Публікація шаблону на dokuwiki.org

Якщо ви створили шаблон, будь ласка, поділіться ним зі спільнотою. Просто створіть сторінку, названу за вашим шаблоном у просторі імен template. Наприклад, якщо ваша тека шаблону називається sample, створіть сторінку template:sample тут, у вікі.

Сторінка повинна містити всю необхідну документацію про те, як встановити та використовувати шаблон. Додавання знімків екрану також може бути гарною ідеєю.

У верхній частині сторінки шаблону необхідно заповнити кілька метаданих полів. Опис кожного поля можна знайти на сторінці Плагін репозиторію.

Починаючи з версії Ponder Stibbons, можливий автоматизований сигнал про оновлення. Для коректної роботи процесу оновлення необхідно, щоб дата “Останнє оновлення” на сторінці шаблону у вікі відповідало даті у файлі template.info.txt у вихідному tarball/zip файлі. Якщо цього не відбувається, оновлення не відбудеться або сигнал “Оновлення” залишиться.

Завантаження на dokuwiki.org заборонене, тому вам потрібно розмістити ваші файли шаблону десь інде. Ми рекомендуємо керувати вашим вихідним кодом за допомогою системи керування версіями, такої як git. Якщо ви використовуєте git, найлегше використовувати публічний хост репозиторіїв, такий як GitHub, який також пропонує трекер помилок для вашого репозиторію.

uk/devel/templates.1715713741.txt.gz · Востаннє змінено: 2024-05-14 21:09 повз uaKalwin

Якщо не вказано інше, вміст цієї Вікі підпадає під дію такої ліцензії: 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