DokuWiki

It's better when it's simple

ユーザ用ツール

サイト用ツール


ja:devel:templates

DokuWiki テンプレート開発

DokuWiki のデザインは、新しいテンプレートを作ることでカスタマイズすることができます。テンプレートは <dokuwiki>/lib/tpl ディレクトリの直下のディレクトリに格納されている PHP ファイルと CSS ファイルからなっています。(実際には、テンプレートは HTML でできていますが、ページのコンテンツを挿入するために PHP が使われています)

始めましょう

テンプレートを新しく作成する最も簡単な方法は、既存のテンプレートを起点とすることです。デフォルトのテンプレートを使うのはよい考えです。きれいな上に DokuWiki テンプレートの標準に倣っているからです。テンプレート名(ディレクトリ)は小文字で、“.” や “_” は使えません。

  1. lib/tpl/default のディレクトリのデータを lib/tpl/yourname へコピーします
  2. 設定マネージャーで新しいテンプレートを選択します
  3. そしてテンプレートファイルの中身を見ます (ディレクトリ配置 参照)
  4. DokuWikiCSS dispatcher を用いてどのように 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 code>/lang.php – テンプレート内で使用されている言葉をローカライゼーションします
      • <lang code>/settings.php – 設定マネージャーで使用されている言葉をローカライゼーションします
    • style.iniStyle.ini 参照

関数

利用できる関数のリストは API documentation でわかります。ここでは特異なものをいくつか示します。

tpl_content()

この関数はページの本文、言い換えれば TOC を含むあなたの Wiki のページのコンテンツを出力します。 この関数を呼ぶ際に引数として false を渡せば、TOC を出力させないようにできます:

tpl_content(false);

これは、TOC をコンテンツから分離して画面のどこか違うところに置きたいときに、使うことができます。 さらなる詳細は tpl_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 pluginsgetTOC() メソッドです。 古いリビジョンやプレビューではメタデータが使えないので、これらの場合には 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() への関数呼出しがあります。この関数は、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 の例が付属しています。

ja/devel/templates.txt · 最終更新: 2010-03-14 05:25 by 222.11.220.47

特に明示されていない限り、本Wikiの内容は次のライセンスに従います: 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