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 の動作を無効にする | 以前のリビジョン | チェックする |
ソース閲覧 / 生データ出力 | チェックする |
チェックするとアイコンが非表示になる。
「以前のリビジョン」は、アイコンが非表示になるだけで、文書の変更履歴自体は裏で記録されている。