目次

Indexmenuプラグイン

名前空間を元にして、ナビゲーションメニューやページリンクのリストなどを自動生成する。

見た目がカッコいいかどうかは議論の余地があるし、オプションがちょっと複雑だけど、DokuWikiでナビゲーション的なものを自動生成する際には、もっともよく使われるプラグインです。

文法

”[]“内はオプション:

基本設定 オプション
{{indexmenu>ns[#n] [ns1[#n] ns2[#n] …] | [js[#theme]] [tsort] … }}

基本設定とオプションの間の”|”はセパレータ。オプションをつける場合は必要:

基本設定 動作 補足
ns メインの名前空間 名。ここで指定した名前空間から、メニューを生成する。 .” なら、indexmenuを書き込むページが属している名前空間になる。FIXME訪問者が見ているページではない)。
”..” と書くかあるいは何も書かない場合は、ルート名前空間(サイトのトップ)になる。
また、たとえば”.:myns”と書いたら、indexmenuを書き込むページが属する名前空間の中にある下位名前空間になる。
n 下位名前空間をどの階層まで表示するか。js オプションで、JavaScriptで生成したツリーを初期状態でどこまで開いておくかを指定。 任意。 nons オプションも使える。何も指定しなければ全名前空間を開いた状態にし、0 または 1 と書けば全部閉じた状態で表示する。
ns1[#n] ... nsn[#n] メインの名前空間内にある名前空間を、追加指定1)。各名前空間は n で指定した深さまで開いた状態になる。 任意。 nons オプションも使える。 n を指定しなければ全名前空間を開いた状態にし、 0 なら閉じた状態にする。

“|” より後ろの設定:

オプション 動作 補足
js JavaScript使用。クリックすると開いていくツリー状メニューになる。 任意。 n をつけない場合、全部開いた状態になる。つけたら、 n で指定した深さまで開いた状態にする。
navbar 現在のページが属する名前空間が自動的に開いたメニューツリーになる。 サイドバーで便利。js オプションを付けられる。 js オプションがない場合、ページキャッシュが作られない(DokuWikiの索引と同じような感じになる)ので、子階層の表示数によっては動作が遅くなる。
contextdevelopmentでのみ有効) 今どの名前空間を見ているかによってツリーそのものを変更する(サイト全体のメニューではなく現在の名前空間を中心にしたメニューにする)。サイドバーで便利。js オプションを付けられる。どっちにせよページキャッシュが作られないので、子階層の表示数によっては動作が遅くなる ( js モードは表示数が増えやすいので、 max オプションを推奨)
tsort ページのみをタイトルで並べ替え。 任意。useheading が有効だと便利。名前空間で並べ替えしたい場合は nsort を使う。
dsort ページのみを日付順で並べ替え。 任意。名前空間の並べ替えは nsort を使う。
rsort 逆順でページを並べ替え。 任意
nsort 名前空間を並べ替え。 任意
nons 名前空間を表示せず、ページだけ表示。 任意
nopg ページを表示せず、名前空間だけ表示。 任意
max#n[#m] n レベルの深さまでツリーを開いた状態にする。m を追記すると、 FIXME 任意。クッキーは noocookie を指定した時と同じく、自動的に無効になる。サーバの能力に依存し、大量のページがある場合に表示が速くなる。 js オプション付きの時のみ有効。
maxjs#n 初期状態でツリーをどの深さまで開いておくかを指定。追加指定した名前空間 、クッキー、 navbar オプションに基づき、ユーザーがクリックして動作した部分に関してのみ開け閉めを記憶する(遅い)。 標準の n は1。よって、大量のページがあっても表示は速い。ユーザー側のCPUの能力に依存し、サーバの能力は関係ない。js オプション付きの時のみ有効。
nocookie 標準だとindexmenuはクッキーを使ってナビゲーション時に名前空間を開く・閉じるを記憶している。このオプションをつけるとクッキーを保持しなくなり、開始状態のまま固定される。 jsオプション付きの時のみ有効。
noscroll JavaScriptの横スクロールを無効にし、見た目を改善する(代わりに表示しきれない文字は見えなくなる)。 js オプション付きの時のみ有効。
notoc TOCプレビュー機能を無効にする。 js オプション付きの時のみ有効。

管理画面の設定

管理ボタン→サイト設定、からもいろいろ設定出来ます。

既知の問題

いまだに細かい部分の指定方法がいまいちわかってないです。

表示したくないページや名前空間は一括指定

Dirプラグインと違い、メニューから除外するページ・名前空間をページごとに切り替える事は出来ない(と思う)。

場所に応じた除外設定が出来ないため、たとえば以下のようなメニューは自動生成では作れない。

(名前空間4のみを除外してツリーを生成)
トップ----+----名前空間1
          |
          +----名前空間2
          |
          +----名前空間3

(名前空間4を強調するために、別に表示)
名前空間4

ただ、こういうサイト作りが本当に可読性に優れているのかどうかは不明。

(全ての名前空間にアクセス出来るツリーを生成)
トップ----+----名前空間1
          |
          +----名前空間2
          |
          +----名前空間3
          |
          +----名前空間4

(名前空間4を強調するために、別に表示)
名前空間4

でも、それほど大きな問題はないと思います。

並べ替えやしぼり込みはDirより若干少なめ

名前空間の開閉動作に神経を使っている一方、ナビゲーションデザインや並べ替え指標は、やや少ないです。メタデータでどうとでも出来るという事かもしれないけど、メタデータを簡単に書き換えられる方法が現状だとないと思う。

Tagプラグインには、全く対応していません。ただ、開閉動作についてはDirプラグインより圧倒的に強力なので、使い分け次第というところでしょうか。

横型ナビゲーションは作れない

ちょっと気の効いたサイトなら大抵ある、「ページ上部に横一列に並んだナビゲーション」は作れません。まぁ、自分の知る限り、横方向のナビゲーションメニューを作れるプラグインはDokuWikiにはありません。

1) メインの名前空間内にはない名前空間を指定すると、無視される