DokuWikiをカスタマイズ

DokuWikiの使い勝手を良くするための細かい設定。

sidebarというページを作成する。

sidebarを普通のページと同じように編集すれば、サイドバーとして全ページに表示される。

組込フック(Include Hooks)とは、DokuWikiのテンプレートに独自のHTMLを追加する機能。

全ページの<head></head>に、一括でGoogle Tag ManagerGoogle Analytics)用のコードを追加するようなときに使います。

DokuWiki公式・Include Hooks

ファイル名 HTMLが組み込まれる場所
meta.html <head>タグ
header.html ページ上部
(ページタイトルの下)
footer.html ページ下部
pageheader.html コンテンツエリアの上部
pagefooter.html コンテンツエリアの下部
sidebarheader.html サイドバー上部
sidebarfooter.html サイドバー下部

DokuWikiのルートドキュメントが/home/user1/Dokuwiki/xxxと仮定。


デフォルトテンプレートの場合

/home/user1/Dokuwiki/xxx/lib/tpl/dokuwikiディレクトリに、
main.phpというファイルがある。

tpl_includeFile('meta.html')

main.phpの中に上記のような記載がある。


Bootstrap3テンプレートの場合

/home/user1/Dokuwiki/xxx/lib/tpl/bootstrap3ディレクトリに、
main.phpというファイルがある。

tpl_includeFile('meta.html')

main.phpの中に上記のような記載がある。


find . -type f -exec grep tpl_includeFile {} +

上記コマンドを実行すれば、
meta.html以外のheader.htmlfooter.htmlなどについても、どのファイルでincludeされているのか確認できる。

/home/user1/Dokuwiki/xxx/confのようなディレクトリに、
meta.htmlというファイルを新規作成する。


meta.html
あいうえお

meta.htmlの中にあいうえおと書けば、

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" dir="ltr" class="no-js">
<head>
    <meta charset="UTF-8" />
    <title>example.com</title>
    <script>(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement)</script>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <link rel="shortcut icon" href="https://example.com/_media/wiki/favicon.ico" />
<link rel="apple-touch-icon" href="https://example.com/_media/wiki/apple-touch-icon.png" />
あいうえお

ページのHTMLソースで、<head>タグの中にあいうえおとそのまま表示される。

meta.html以外のheader.htmlfooter.htmlなどについても、
DokuWikiサイトのドキュメントルート直下のconfディレクトリに設置すれば機能する。

本来、meta.htmlには、あいうえおのようなテキストではなく
<link rel=“xxx” href=“https://example.com/yyy” />
のようなHTMLタグを書く。

また、meta.htmlなどに
<?php echo “hello world”; ?>
のように書けば組み込みフック内でphpも実行できる。

meta.htmlなどの組み込みフックのファイルは、DokuWiki本体やテンプレートをアップデートしても上書きされない。

スーパーユーザーのパスワードを忘れてしまい、メールでの再発行なども失敗した場合、
users.auth.phpに、ユーザー名とパスワード(のハッシュ値)を直接書き込むことでユーザーを追加できる。

cd /home/user1/Dokuwiki/xxx
vi conf/users.auth.php

users.auth.phpファイルを開く。


users.auth.php
deleteme:$1$4fd0ad31$.cId7p1uxI4a.RcrH81On0:-:-:admin,user 

users.auth.phpに上記の1行を追加する。

すると、
ユーザー名: deleteme
パスワード: admin
でログインできるようになる。

$1$4fd0ad31$.cId7p1uxI4a.RcrH81On0の部分はadminのハッシュ値。

ログインに成功したら、直ちに別の管理者アカウントを作成し、deletemeというユーザーは削除する。
削除せずに放置すると、サイトを乗っ取られる恐れがある。

DokuWiki公式・パスワードを忘れました

管理 > ユーザー管理の画面からユーザーの追加と削除ができる。

data/pagesディレクトリが名前空間のルートになっている。

DokuWikiでstartというページを作成すると、
data/pagesディレクトリに、start.txtというファイルが生成される。
URLはhttp://example.com/startのようになる。

DokuWikiで、aaa:bbbというページを作成すると、
data/pages/aaaディレクトリに、bbb.txtというファイルが生成される。
URLはhttp://example.com/aaa/bbbのようになる。

{{https://img.icons8.com/material-rounded/24/000000/share.png}}
のように書くと、

のように画像が表示される。

管理 > サイト設定

認証
disableactions
DokuWiki の動作を無効にする
ユーザー登録 チェックする

チェックを入れるとユーザー登録が無効になる。

自由なユーザー登録ができなくなり、
管理者が管理画面からのみユーザー追加できるようになる。

設定項目: disableactions

管理 > アクセスコントロール管理

ページ/名前空間 ユーザー/グループ 権限
* @ALL 読取
(デフォルトは、アップロード
* @user アップロード

@ALLというグループのみがありアップロード権限が設定されている。
この状態だと、ログインしていない人でもページの編集ができる。

@ALL読取にすることで、ログインしていない人はページを編集できなくなる。

[ルート]を選択し、権限を追加から@userを追加、アップロード権限を設定する。
@userというのは、ログイン済みのユーザー。
ユーザー登録しログインしたユーザーのみがページ編集をできるようになる。

DokuWiki公式・アクセス制御リスト (ACL)

DokuWikiではページ名の英字は小文字に変換される。

Wikiというページを作成しても、
wikiとしてページが登録される。

DokuWikiではページを削除しても、履歴が残る。

履歴を含めて完全に削除するには、サーバーからいくつかのファイルを削除する必要がある。

xxxというページを削除する場合、
data/atticディレクトリにある
xxx.1234567890.txt.gzのようなファイルを消す。
1234567890の部分の数字が異なる複数のファイルがあり、1つ1つのファイルが変更の差分になっている。

また、data/metaディレクトリにある、
xxx.changesxxx.metaのようなファイルを消す。

xxx.changesは変更の履歴を管理しているファイル。

DokuWiki公式・変更履歴
DokuWiki公式・メタデータ

{{http://example.com/xxx.jpg?nolink}}

http://example.com/xxx.jpgというURLの画像をDokuWiki上で表示する場合、
URLを{{}}で囲む。
この場合、画面に画像が表示され、かつ画像がURLへのリンクとなる。

URLのうしろに?nolinkをつけると、画像だけを表示できる。
(リンクにならない)

管理 > サイト設定

表示
hidepages
検索、サイトマップ、その他の自動インデックスの結果に表示しないページ
^:(sidebar|playground)

hidepagesに正規表現でパスを指定する。

^:(sidebar|playground)と書くと

  • http://example.com/sidebar
  • http://example.com/playground/playground

などのページが、サイトマップやRSSに表示されなくなる。

サイトマップ等にリストされなくなるだけで、URLを直接指定すれば表示自体はできてしまう。
セキュリティ的に公開するとまずい情報を非表示にできるわけではないので注意。

DokuWiki公式・設定項目: hidepages

cd /home/user1/Dokuwiki/xxx
vi conf/userscript.js

ドキュメントルートのconfディレクトリに
userscript.jsというファイルを新規作成する。

userscript.js
jQuery(function() {
    var prv = jQuery('div.preview');
    if(prv[0]) return;
    jQuery('#minoredit').prop('checked', true);
});

userscript.jsに上記のように書くと、
ページ編集時に小変更のチェックがデフォルトでチェックされた状態になる。


chown nginx:nginx conf/userscript.js

userscript.jsの所有者をnginxに変更。

DokuWiki公式・デフォルトで「小変更」にチェックしておく

画面の右端に

  • 文書の編集
  • 以前のリビジョン
  • バックリンク
  • 文書の先頭へ

などのアイコンが表示されている。

文書の編集権限がない人には、「文書の編集」の代わりに「ソースの表示」のアイコン。

「ソースの表示」や「以前のリビジョン」を一般ユーザーに見せたくない場合は、これらのアイコンを非表示にする。

管理 > サイト設定

認証
disableactions
DokuWiki の動作を無効にする
以前のリビジョン チェックする
ソース閲覧 / 生データ出力 チェックする

チェックするとアイコンが非表示になる。

「以前のリビジョン」は、アイコンが非表示になるだけで、文書の変更履歴自体は裏で記録されている。

  • 最終更新: 2021/09/05 07:28