はじめに (対象読者・この記事でわかること)

この記事は、DokuWikiを運用しており、全ページに共通の情報を表示したいと考えている管理者や開発者の方を対象にしています。例えば、著作権表示、注意事項、共通のフッターナビゲーション、特定の告知など、ページの種類に関わらず統一して表示したいコンテンツがある場合に役立ちます。

この記事を読むことで、DokuWikiの標準機能と簡単なテンプレート編集を組み合わせることで、DokuWikiの全ページに任意のDokuWiki記法テキストを挿入する方法を理解し、実際に設定できるようになります。これにより、DokuWikiサイト全体の情報の一貫性を高め、管理の手間を削減することが可能です。

前提知識

この記事を読み進める上で、以下の知識があるとスムーズです。

  • DokuWikiの基本的な使い方と管理画面へのアクセス方法
  • サーバー(またはローカル環境)のファイルシステムを操作できる知識
  • テキストエディタの基本的な操作
  • 簡単なHTMLの構造を理解していると、テンプレート編集がより分かりやすくなります

DokuWiki全ページ共通テキスト挿入の必要性と実現方法の選択肢

DokuWikiを運用していると、全てのページに共通して表示したいコンテンツが出てくることがあります。例えば、以下のようなケースです。

  • 著作権表示やライセンス情報: サイト全体のフッターに表示したい。
  • 免責事項や注意事項: 全てのコンテンツ閲覧者に周知したい。
  • 共通のナビゲーションやバナー: 特定のカテゴリへのリンクや、サイト内検索への誘導など。
  • 外部サービスへのリンク: 公式サイトやSNSアカウントへのリンク。

これらの情報を手動で全てのページに記述するのは非常に非効率的ですし、更新が必要になった際には膨大な手間がかかります。また、記述漏れや表記揺れの原因にもなりかねません。

DokuWikiで共通テキストを挿入する方法はいくつか考えられますが、主な選択肢は以下の通りです。

  1. プラグインを利用する: 特定の目的のために開発されたプラグインがあれば、最も簡単に実現できます。しかし、適切なプラグインが見つからない場合や、プラグインの機能に依存したくない場合に不向きです。
  2. DokuWikiテンプレートファイルを直接編集する: DokuWikiはPHPで書かれており、テンプレートファイルを直接編集することで、表示を完全に制御できます。非常に柔軟な対応が可能ですが、PHPやDokuWikiのテンプレート構造に関する知識が必要となり、DokuWiki本体やテンプレートのアップデート時に変更が上書きされるリスクがあります。
  3. 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という特殊な名前のファイルがあり、これを活用します。

  1. sidebar.txt の場所を確認または作成します。 DokuWikiのインストールディレクトリ内のconfフォルダ、または、名前空間に応じたdata/pagesフォルダ内に作成します。最も簡単なのは、DokuWikiの管理画面から「sidebar」という名前のページを作成することです。 http://your_dokuwiki_url/doku.php?id=sidebar にアクセスし、編集画面を開いてください。

  2. 共通テキストを記述します。 例えば、フッターに著作権表示をしたい場合、以下のようにDokuWiki記法で記述します。

    ```dokuwiki

    //© 2025 Kousukei. All Rights Reserved.// [お問い合わせページ>>contact] ``` これは「水平線」の後に「斜体の著作権表示」と「お問い合わせページへのリンク」を表示する例です。

  3. 保存します。 DokuWikiの管理画面で保存すれば、data/pages/sidebar.txtまたはconf/sidebar.txtが作成されます。

    ポイント: * 通常、sidebar.txtはテーマのサイドバー部分に表示されるファイルですが、このファイルの内容はPHP関数tpl_include_page()で簡単に読み込めます。 * ファイルの内容はDokuWiki記法で記述できるため、通常のページ作成と同じ感覚でコンテンツを作成できます。

ステップ2:テンプレートファイルの編集(sidebar.txtを全ページに表示させる設定)

次に、sidebar.txtの内容をDokuWikiの各ページに表示させるために、現在使用しているテンプレートファイルを編集します。

  1. 編集するテンプレートファイルを見つけます。 ほとんどの場合、編集するのはdokuwiki/lib/tpl/[使用中のテンプレート名]/main.phpファイルです。 例えば、デフォルトのDokuWikiテンプレートを使用している場合は、dokuwiki/lib/tpl/dokuwiki/main.phpが該当します。 FTPクライアントやサーバーのファイルマネージャー、SSHなどでこのファイルを開きます。編集前に必ずバックアップを取ってください。

  2. 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 -->
    

    `` 上記では、既存の

ステップ3:キャッシュのクリアと表示確認

テンプレートファイルを編集したら、DokuWikiのキャッシュをクリアして変更を反映させ、正しく表示されるか確認します。

  1. DokuWikiのキャッシュをクリアします。 DokuWikiの管理画面にログインし、「管理」->「設定管理」->「キャッシュ」セクションを探します。 「ページのキャッシュを消去」ボタンをクリックして、キャッシュをクリアします。

  2. ブラウザで表示を確認します。 DokuWikiの任意のページを開き、sidebar.txtの内容が挿入した位置(この例ではフッター)に表示されているか確認してください。DokuWiki記法が正しくレンダリングされていることも確認しましょう。

ハマった点やエラー解決

sidebar.txtが全く表示されない

  • 問題点:
    • sidebar.txtファイルが存在しない、またはファイル名が間違っている。
    • sidebar.txtを作成した名前空間が意図したものと違う。
    • main.phpに記述したtpl_include_page()の引数が間違っている。
    • PHPコードの記述ミスにより、構文エラーが発生している。
  • 解決策:
    • DokuWikiの管理画面から「sidebar」という名前のページを確実に作成し、内容を記述して保存する。これが最も確実な方法です。
    • dokuwiki/data/pages/sidebar.txt が存在するか、ファイルの中身が正しいか確認する。
    • main.php のPHPコードが <?php ... ?> で正しく囲まれているか、tpl_include_page('sidebar', false, true); が正確に記述されているかを確認する。

表示はされるが、意図しない場所に表示される、またはレイアウトが崩れる

  • 問題点:
    • main.php内のtpl_include_page()を挿入した位置が適切ではない。
    • 追加したdivタグ(例: dokuwiki-common-footer)にCSSが適用されていない、または既存のCSSと競合している。
  • 解決策:
    • main.phpのHTML構造をよく確認し、目的の場所に挿入するように調整する。ブラウザの開発者ツール(F12キーで開くことが多い)を使って、HTML要素の構造とCSSの適用状況を確認すると良いでしょう。
    • もしレイアウトが崩れる場合は、追加したdivにシンプルなCSS(例: margin-top: 20px; text-align: center; など)をdokuwiki/conf/userstyle.cssに記述して調整する。

DokuWiki本体やテンプレートのアップデート後に変更が消えた

  • 問題点:
    • main.phpを直接編集したテンプレートが、アップデートによって上書きされてしまった。
  • 解決策:
    • 必ずカスタムテンプレートを作成して編集するようにしてください。既存のテンプレートをコピーし、別名で保存し、DokuWikiの設定でそのカスタムテンプレートを使用するように設定します。これにより、本体や元のテンプレートのアップデートの影響を受けなくなります。

解決策

上記の問題点を踏まえ、以下の手順で解決を図りましょう。

  1. バックアップの確認: 編集前に取ったmain.phpのバックアップがあるか確認し、問題があれば元の状態に戻せるようにしておく。
  2. ファイルパスとファイル名の再確認: sidebar.txtが正しい場所(data/pages/sidebar.txtなど)に、正しいファイル名で存在するか確認する。
  3. PHP構文のチェック: main.phpに記述したPHPコードに構文エラーがないか(特に<?php?>で囲まれているか)を確認する。
  4. HTML構造の理解: main.phpのHTML構造を開発者ツールで確認し、tpl_include_page()を挿入する最適な位置を見極める。多くの場合、id="dokuwiki__content"class="footer"などの主要なコンテナ要素の前後が候補になります。
  5. カスタムテンプレートの利用: 将来的なアップデートに備え、今回変更したテンプレートを複製し、カスタムテンプレートとして運用する。

まとめ

本記事では、DokuWikiの全ページに共通のDokuWiki記法テキストを挿入する方法について解説しました。

  • DokuWikiの全ページに共通情報を表示したいニーズは、著作権表示、免責事項、共通ナビゲーションなど多岐にわたります。
  • sidebar.txt を活用することで、DokuWiki記法で書かれたコンテンツを簡単に定義できます。これは、通常サイドバーに表示される特殊なページファイルです。
  • テンプレートファイル(main.php)を編集し、tpl_include_page('sidebar', false, true); 関数を適切な場所に記述することで、sidebar.txtの内容をフッターやヘッダーなど、任意のコンテンツエリアに表示させることができます。

この記事を通して、DokuWikiの管理効率の向上と、ウェブサイト全体の一貫性のある情報提供というメリットを読者の皆様が得られたことと思います。手動での更新作業から解放され、よりスムーズなDokuWiki運用が可能になったはずです。

今後は、CSSによる表示のカスタマイズdokuwiki-common-footerクラスを利用)や、より複雑な共通コンテンツを動的に生成する方法、あるいは複数の共通コンテンツを異なる箇所に表示させる応用例についても記事にする予定です。カスタムテンプレートの作成についても、改めて詳細な記事を公開するかもしれません。

参考資料