DokuWikiをカスタマイズ
DokuWikiの使い勝手を良くするための細かい設定。
サイドバーを追加する
DokuWikiの組込フック(Include Hooks)を設定する方法
組込フック(Include Hooks)とは、DokuWikiのテンプレートに独自のHTMLを追加する機能。
全ページの<head></head>に、一括でGoogle Tag Manager(Google Analytics)用のコードを追加するようなときに使います。
組み込みフックの種類
| ファイル名 | HTMLが組み込まれる場所 |
|---|---|
| meta.html | <head>タグ |
| header.html | ページ上部 (ページタイトルの下) |
| footer.html | ページ下部 |
| pageheader.html | コンテンツエリアの上部 |
| pagefooter.html | コンテンツエリアの下部 |
| sidebarheader.html | サイドバー上部 |
| sidebarfooter.html | サイドバー下部 |
組み込みフックをincludeしているファイル
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.htmlやfooter.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.htmlやfooter.htmlなどについても、
DokuWikiサイトのドキュメントルート直下のconfディレクトリに設置すれば機能する。
組み込みフックの中身
本来、meta.htmlには、あいうえおのようなテキストではなく
<link rel=“xxx” href=“https://example.com/yyy” />
のようなHTMLタグを書く。
また、meta.htmlなどに
<?php echo “hello world”; ?>
のように書けば組み込みフック内でphpも実行できる。
meta.htmlなどの組み込みフックのファイルは、DokuWiki本体やテンプレートをアップデートしても上書きされない。
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のようになる。
DokuWikiにCDNなど外部の画像を表示する方法
ユーザー登録を禁止に設定する方法
管理 > サイト設定
| 認証 | ||
|---|---|---|
| disableactions DokuWiki の動作を無効にする | ユーザー登録 | チェックする |
チェックを入れるとユーザー登録が無効になる。
自由なユーザー登録ができなくなり、
管理者が管理画面からのみユーザー追加できるようになる。
登録ユーザーのみがページを編集できるように設定する方法
管理 > アクセスコントロール管理
| ページ/名前空間 | ユーザー/グループ | 権限 |
|---|---|---|
| * | @ALL | 読取(デフォルトは、 アップロード) |
| * | @user | アップロード |
@ALLというグループのみがありアップロード権限が設定されている。
この状態だと、ログインしていない人でもページの編集ができる。
@ALLを読取にすることで、ログインしていない人はページを編集できなくなる。
[ルート]を選択し、権限を追加から@userを追加、アップロード権限を設定する。
@userというのは、ログイン済みのユーザー。
ユーザー登録しログインしたユーザーのみがページ編集をできるようになる。
DokuWikiのパス名は小文字に変換される
DokuWikiではページ名の英字は小文字に変換される。
Wikiというページを作成しても、
wikiとしてページが登録される。
DokuWikiで履歴を削除する方法
DokuWikiではページを削除しても、履歴が残る。
履歴を含めて完全に削除するには、サーバーからいくつかのファイルを削除する必要がある。
xxxというページを削除する場合、
data/atticディレクトリにある
xxx.1234567890.txt.gzのようなファイルを消す。
1234567890の部分の数字が異なる複数のファイルがあり、1つ1つのファイルが変更の差分になっている。
また、data/metaディレクトリにある、
xxx.changesとxxx.metaのようなファイルを消す。
xxx.changesは変更の履歴を管理しているファイル。
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を直接指定すれば表示自体はできてしまう。
セキュリティ的に公開するとまずい情報を非表示にできるわけではないので注意。
デフォルトで「小変更」にチェックを入れる
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に変更。
ページツールを非表示にする
画面の右端に
- 文書の編集
- 以前のリビジョン
- バックリンク
- 文書の先頭へ
などのアイコンが表示されている。
文書の編集権限がない人には、「文書の編集」の代わりに「ソースの表示」のアイコン。
「ソースの表示」や「以前のリビジョン」を一般ユーザーに見せたくない場合は、これらのアイコンを非表示にする。
管理 > サイト設定
| 認証 | ||
|---|---|---|
| disableactions DokuWiki の動作を無効にする | 以前のリビジョン | チェックする |
| ソース閲覧 / 生データ出力 | チェックする | |
チェックするとアイコンが非表示になる。
「以前のリビジョン」は、アイコンが非表示になるだけで、文書の変更履歴自体は裏で記録されている。