DokuWiki のデザインは、新しいテンプレートを作ることでカスタマイズすることができます。テンプレートは <dokuwiki>/lib/tpl
ディレクトリの直下のディレクトリに格納されている PHP ファイルと CSS ファイルからなっています。(実際には、テンプレートは HTML でできていますが、ページのコンテンツを挿入するために PHP が使われています)
テンプレートを新しく作成する最も簡単な方法は、既存のテンプレートを起点とすることです。デフォルトのテンプレートを使うのはよい考えです。きれいな上に DokuWiki テンプレートの標準に倣っているからです。テンプレート名(ディレクトリ)は小文字で、“.” や “_” は使えません。
テンプレートは以下のディレクトリ構造に倣うべきです(すべてのパスはテンプレートディレクトリから相対的です)。 CSS ファイルは style.ini
で指定されますが、少なくともスクリーン用と印刷用に一つずつ用意するべきです。
<dokuwiki>/lib/tpl/<template>/
<filename>.css
main.php
– DokuWiki の全体的なレイアウトdetail.php
– 画像の詳細ページmediamanager.php
– メディア選択のポップアップimages/
– テンプレートの中で使われるすべての画像conf/
lang/
– 言語ファイル<lang code>/lang.php
– テンプレート内で使用されている言葉をローカライゼーションします<lang code>/settings.php
– 設定マネージャーで使用されている言葉をローカライゼーションしますstyle.ini
– Style.ini 参照利用できる関数のリストは API documentation でわかります。ここでは特異なものをいくつか示します。
この関数はページの本文、言い換えれば TOC を含むあなたの Wiki のページのコンテンツを出力します。
この関数を呼ぶ際に引数として false
を渡せば、TOC を出力させないようにできます:
tpl_content(false);
これは、TOC をコンテンツから分離して画面のどこか違うところに置きたいときに、使うことができます。
さらなる詳細は tpl_toc()
を参照してください。
デフォルトでは tpl_content()
関数は Table of Contents を実際のページコンテンツの直前に表示しますが、あなたのテンプレートがサイトバーや複雑なレイアウトを使っている場合は、TOC をページのコンテンツから独立させたいと思うかもしれません。これは tpl_toc()
関数が可能にします。
これを使用するときは、tpl_content()
の引数を false
とすることで TOC の自動配置を無効にしておくことが重要です。
例:
<div id="content"> <?php tpl_content(false)?> </div> <div id="sidebar"> <?php tpl_toc()?> </div>
tpl_toc()
関数は TOC を以下の3箇所から生成します。グローバル変数 $TOC、そのページのメタデータ、または admin plugins の 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>
この関数はテンプレートの中から構成設定にアクセスするために使用されます。
便利なグローバル変数と定数の完全なリストは環境のページを参照してください。
デフォルトテンプレートの main.php ファイルのほぼ最下部に tpl_indexerWebBug()
への関数呼出しがあります。この関数は、lib/exe/indexer.php
へのリクエストが行われるように、HTML の <img>
タグを生成します。この不可欠な DokuWiki のパーツは wiki をスムーズに動作させるために重要な管理を提供します。すべてのテンプレートはこの関数を含むべきで、これがなければ wiki は正しく動作しないかもしれません(たとえば検索インデックスが作られないなど)。
挿入フックは、独自のテンプレートを書かずに、あなたの DokuWiki に静的なコンテンツを加える簡易な方法です。これを用いると、各ページに共通のヘッダや企業ロゴを加えたり、各ページの末尾に免責文を加えたりできます。
DokuWiki のデフォルトのテンプレートは、ページを表示する際、lib/tpl/default/
ディレクトリ内の特別な名前のファイルを探し、適切な場所に単純に挿入します。これらのファイルには好きな HTML を追加できます。もちろんこれはデフォルトのテンプレートを使っている時のみ動作します。
PHP 開発者のためのヒント: これらのファイルの中に PHP を含むことも可能です。
これらのファイルはすべて lib/tpl/default/
ディレクトリ内から検索されます。
ファイル名 | 挿入される HTML の場所 |
---|---|
meta.html | HTML の <head> 内。追加のスタイルやメタヘッダーを追加するために使用 |
topheader.html | <body> タグ直後のページの先頭 |
header.html | 上部の青いバーよりも上で、ページ名と Wiki タイトルの下 |
pageheader.html | パンくずリストの下で、実際のコンテンツの上 |
pagefooter.html | 下部の青いバーの上で、最終更新日の下 |
footer.html | </body> タグ直前のページの末尾 |
DokuWiki には、いくつかのボタンと、CC ライセンスの RDF 記述を含んだ footer.html
の例が付属しています。