はじめに (対象読者・この記事でわかること)
この記事は、DokuWikiを運用しており、全ページに共通の情報を表示したいと考えている管理者や開発者の方を対象にしています。例えば、著作権表示、注意事項、共通のフッターナビゲーション、特定の告知など、ページの種類に関わらず統一して表示したいコンテンツがある場合に役立ちます。
この記事を読むことで、DokuWikiの標準機能と簡単なテンプレート編集を組み合わせることで、DokuWikiの全ページに任意のDokuWiki記法テキストを挿入する方法を理解し、実際に設定できるようになります。これにより、DokuWikiサイト全体の情報の一貫性を高め、管理の手間を削減することが可能です。
前提知識
この記事を読み進める上で、以下の知識があるとスムーズです。
- DokuWikiの基本的な使い方と管理画面へのアクセス方法
- サーバー(またはローカル環境)のファイルシステムを操作できる知識
- テキストエディタの基本的な操作
- 簡単なHTMLの構造を理解していると、テンプレート編集がより分かりやすくなります
DokuWiki全ページ共通テキスト挿入の必要性と実現方法の選択肢
DokuWikiを運用していると、全てのページに共通して表示したいコンテンツが出てくることがあります。例えば、以下のようなケースです。
- 著作権表示やライセンス情報: サイト全体のフッターに表示したい。
- 免責事項や注意事項: 全てのコンテンツ閲覧者に周知したい。
- 共通のナビゲーションやバナー: 特定のカテゴリへのリンクや、サイト内検索への誘導など。
- 外部サービスへのリンク: 公式サイトやSNSアカウントへのリンク。
これらの情報を手動で全てのページに記述するのは非常に非効率的ですし、更新が必要になった際には膨大な手間がかかります。また、記述漏れや表記揺れの原因にもなりかねません。
DokuWikiで共通テキストを挿入する方法はいくつか考えられますが、主な選択肢は以下の通りです。
- プラグインを利用する: 特定の目的のために開発されたプラグインがあれば、最も簡単に実現できます。しかし、適切なプラグインが見つからない場合や、プラグインの機能に依存したくない場合に不向きです。
- DokuWikiテンプレートファイルを直接編集する: DokuWikiはPHPで書かれており、テンプレートファイルを直接編集することで、表示を完全に制御できます。非常に柔軟な対応が可能ですが、PHPやDokuWikiのテンプレート構造に関する知識が必要となり、DokuWiki本体やテンプレートのアップデート時に変更が上書きされるリスクがあります。
sidebar.txtを応用し、テンプレートで任意の場所に表示する: DokuWikiには、サイドバーのコンテンツを定義するためのsidebar.txtという特殊なページがあります。通常はサイドバーに表示されますが、このファイルをテンプレート内で任意の場所に読み込むことで、手軽にDokuWiki記法の共通テキストを挿入できます。PHPの知識は最小限で済み、柔軟性とメンテナンス性のバランスが取れた方法です。
この記事では、メンテナンス性とDokuWiki記法による記述の容易さを考慮し、「sidebar.txtを活用し、DokuWikiテンプレート(main.php)を編集して全ページに挿入する」 方法に焦点を当てて解説します。この方法は、プラグインに依存せず、かつ比較的シンプルな手順で実現できるため、多くの方にとって実用的な解決策となるでしょう。
sidebar.txtを活用した全ページ共通テキスト挿入の具体的な手順
ここでは、DokuWikiの全ページに共通のテキスト(DokuWiki記法で記述されたコンテンツ)を挿入する具体的な手順を解説します。今回は例として、フッターに簡単な著作権表示を挿入するシナリオで進めます。
ステップ1:sidebar.txt の作成と共通テキストの記述
まず、DokuWikiの全ページに表示したいコンテンツをDokuWiki記法で記述したファイルを作成します。DokuWikiにはsidebar.txtという特殊な名前のファイルがあり、これを活用します。
-
sidebar.txtの場所を確認または作成します。 DokuWikiのインストールディレクトリ内のconfフォルダ、または、名前空間に応じたdata/pagesフォルダ内に作成します。最も簡単なのは、DokuWikiの管理画面から「sidebar」という名前のページを作成することです。http://your_dokuwiki_url/doku.php?id=sidebarにアクセスし、編集画面を開いてください。 -
共通テキストを記述します。 例えば、フッターに著作権表示をしたい場合、以下のようにDokuWiki記法で記述します。
```dokuwiki
//© 2025 Kousukei. All Rights Reserved.// [お問い合わせページ>>contact] ``` これは「水平線」の後に「斜体の著作権表示」と「お問い合わせページへのリンク」を表示する例です。
-
保存します。 DokuWikiの管理画面で保存すれば、
data/pages/sidebar.txtまたはconf/sidebar.txtが作成されます。ポイント: * 通常、
sidebar.txtはテーマのサイドバー部分に表示されるファイルですが、このファイルの内容はPHP関数tpl_include_page()で簡単に読み込めます。 * ファイルの内容はDokuWiki記法で記述できるため、通常のページ作成と同じ感覚でコンテンツを作成できます。
ステップ2:テンプレートファイルの編集(sidebar.txtを全ページに表示させる設定)
次に、sidebar.txtの内容をDokuWikiの各ページに表示させるために、現在使用しているテンプレートファイルを編集します。
-
編集するテンプレートファイルを見つけます。 ほとんどの場合、編集するのは
dokuwiki/lib/tpl/[使用中のテンプレート名]/main.phpファイルです。 例えば、デフォルトのDokuWikiテンプレートを使用している場合は、dokuwiki/lib/tpl/dokuwiki/main.phpが該当します。 FTPクライアントやサーバーのファイルマネージャー、SSHなどでこのファイルを開きます。編集前に必ずバックアップを取ってください。 -
sidebar.txtを読み込むコードを挿入します。main.phpファイルには、DokuWikiのレイアウトを構成するHTMLとPHPのコードが含まれています。sidebar.txtの内容をフッターに表示したい場合、通常は<footer>タグの内部、またはコンテンツエリアの末尾に挿入します。main.phpファイル内で、<footer>タグを探してください。その中の適切な位置、例えば、既存のフッターコンテンツの後や、</div>でコンテンツエリアが閉じられる直前などに、以下のPHPコードを挿入します。php <?php /* sidebar.txtの内容を読み込み表示 */ ?> <div class="dokuwiki-common-footer"> <?php tpl_include_page('sidebar', false, true); ?> </div>コードの説明: *
tpl_include_page('sidebar', false, true);がsidebar.txtの内容を読み込み、DokuWiki記法としてレンダリングするDokuWikiのテンプレート関数です。 * 第一引数'sidebar'は読み込むページID(sidebar.txtの場合sidebar)。 * 第二引数falseは、ページが存在しない場合にリンクを生成しない設定。 * 第三引数trueは、レンダリング時にページタイトルを表示しない設定(通常、共通フッターではタイトルは不要)。 *dokuwiki-common-footerというクラス名のdivで囲むことで、後でCSSを使ってスタイルを適用しやすくなります。挿入例(
dokuwiki/lib/tpl/dokuwiki/main.phpの場合): ```php // ... main.php の中略 ...</div><!-- /content --> <div class="clearer"></div> <?php tpl_flush(); ?> <div class="dokuwiki-common-footer"> <?php tpl_include_page('sidebar', false, true); ?> </div> <div class="footer"> <div class="wrap_footer"> <?php tpl_license(''); // License text ?> <div class="width-limited"> <?php //tpl_debuginfo(); // Debug info ?> <?php tpl_poweredby(); // Powered by DokuWiki ?> </div> </div> </div><!-- /footer --> </div><!-- /wrapper -->
