最終更新:
2007-07-28 (土) 21:58:07
pagetree.inc.php †
サマリ | JavaScript を使わないツリーメニュー |
---|
リビジョン | 2.1 |
---|
対応バージョン | 1.4.6 以降で確認 |
---|
作者 | revulo |
---|
ライセンス | GPLv2 |
---|
目次 †
概要 †
- ページの階層構造をツリーメニューとして表示します
- 現在参照しているページの付近だけを展開して表示します
- MenuBar ページに #pagetree と書くだけで、手軽に設置できます
- JavaScript を使わずに、比較的それらしい見た目と操作性を実現しています
なお、このプラグインをベースに JavaScript 版 と Ajax 版 も作りました。
善し悪しがありますが、JavaScript 版の方が使いやすいと思います。
サンプル †
このプラグインの Ajax 版 を
メニューバーに設置してあります。
JavaScript によるメニューの開閉機能以外はほぼ同じなので、
これで雰囲気をつかんで下さい。
インストール †
アーカイブファイルをダウンロードし、
PukiWiki をインストールしてあるディレクトリで展開します。
$ tar xvfz pagetree-2.1.tar.gz
skin/pukiwiki.css.php の @charset 行の直後に、以下の設定を追加します。
@import "./pagetree.css";
あとは MenuBar ページに以下のように書いて下さい。
#pagetree
なお、
Help や MenuBar などの階層化されていないページは、デフォルトでは表示しないようにしています。
それらのページも表示したい場合は、PLUGIN_PAGETREE_HIDE_TOPLEVEL_LEAVES や
PLUGIN_PAGETREE_INCLUDE_LIST の設定を変更して下さい。
書式 †
#pagetree
#pagetree(ページ名)
- 引数が無い場合は、現在参照しているページが基点となります。
- 引数としてページ名を指定した場合は、そのページが基点となります。
設定 †
ja.lng.php や en.lng.php で以下のように定義することで、
表示されるメッセージを変更できます。
$_pagetree_messages = array(
'title' => 'メニュー',
'toppage' => 'トップ',
);
また、pagetree.inc.php の先頭部分で以下の値を設定することで、動作をカスタマイズできます。
- PLUGIN_PAGETREE_TOP_DEFAULTPAGE
- FrontPage へのリンクはツリーの先頭に表示する (true, false のいずれか)
- PLUGIN_PAGETREE_HIDE_TOPLEVEL_LEAVES
- Help や MenuBar のような階層化されていないページは非表示にする (true, false のいずれか)
- PLUGIN_PAGETREE_NON_LIST
- 非表示にしたいページのリスト (正規表現)
- PLUGIN_PAGETREE_INCLUDE_LIST
- 非表示ページのうち例外的に表示したいページのリスト (正規表現)
- PLUGIN_PAGETREE_MARKER_COLLAPSED
- 展開されていないページを示すマーカー
- PLUGIN_PAGETREE_MARKER_EXPANDED
- 展開されているページを示すマーカー
- PLUGIN_PAGETREE_MARKER_LEAF
- 葉ページを示すマーカー
FAQ †
- Q1.
- ***というページがツリーに表示されないようにしたいです。
- A1.
- 非表示にしたいページを
PLUGIN_PAGETREE_NON_LIST か pukiwiki.ini.php の $non_list に
正規表現で指定して下さい。
例えば、BBS ページの子ページを全て隠したい場合は、
define('PLUGIN_PAGETREE_NON_LIST', '^BBS\/');
のように書くことができます。
なお、$non_list の設定は他のプラグインの動作にも影響します。
例えば、最新の20件にもそのページは載らなくなります。
一方、PLUGIN_PAGETREE_NON_LIST で設定したページはこのプラグインでのみ非表示になります。
目的に応じて使い分けて下さい。
- Q2.
- 非表示になっているページのうち、***というページはツリーに表示させたいです。
- A2.
- 表示させたいページを PLUGIN_PAGETREE_INCLUDE_LIST に正規表現で指定して下さい。
例えば、Help ページと FormattingRules ページをツリーに表示させたい場合は、
define('PLUGIN_PAGETREE_INCLUDE_LIST', '^(Help|FormattingRules)$');
のように書くことができます。
もしくは、PLUGIN_PAGETREE_HIDE_TOPLEVEL_LEAVES を false に設定して、
PLUGIN_PAGETREE_NON_LIST で削っていく方が楽な場合もあるかもしれません。
- Q3.
- 新規作成したページがツリーに表示されません。
- A3.
- おそらく、そのページが非表示になるような設定がされています。上の Q1, Q2 も参照して下さい。
また、階層化されていない単独のページはデフォルトでは表示されません。
それが原因の場合は、以下のいずれかの方法で対処して下さい。
- そのページの子ページを作って階層化する
- PLUGIN_PAGETREE_INCLUDE_LIST にそのページを追加する
- PLUGIN_PAGETREE_HIDE_TOPLEVEL_LEAVES を false に設定する
- Q4.
- なんだか動作が重たい気がします。
- A4.
- 全ページ名のリストを処理したりするのでそれなりに時間がかかります。
一応できるだけの高速化はしてありますが、ページ数の多いサイトだと厳しいかもしれません。
動作速度に不満がある場合は以下のことを検討してみて下さい。
- Q5.
- Opera で見ると、他のブラウザに比べて文字が小さく見えます。
- A5.
- スタイルシートに以下のような設定を加えるといいかもしれません。
html:first-child div#menubar { /* for Opera */
font-size: 100%;
}
PukiWiki 標準のスキンの場合はこれで改善されます。
何パーセントに設定するのが良いかはスキンによって異なるので、
その辺は試行錯誤して下さい。
ダウンロード †
履歴 †
バージョン | 日付 | 更新内容 |
2.1 | 2007/07/26 | 全ページ名のリストをソートしなくて済むようにして高速化。リンクを相対 URL 形式に変更 |
2.0 | 2007/03/12 | 葉ページの判定処理を追加。階層化されていないページはデフォルトで非表示に |
1.6 | 2007/03/12 | NON_LIST, INCLUDE_LIST の設定を追加。SHOW_PASSAGE の設定を廃止。マーカー用の画像を同梱 |
1.5 | 2007/01/09 | 高速化。(3d) のような経過時間はデフォルトで表示しないように変更 |
1.4 | 2006/12/24 | XHTML 1.1 に準拠していなかったのを修正 |
1.3 | 2006/11/14 | ページ名に記号が含まれているとソートに失敗することがあったのを修正 |
1.2 | 2006/11/05 | 親ページが存在しない場合に表示が崩れていたのを修正 |
1.1 | 2006/10/29 | スタイルシートの利用と高速化のために全面書き直し |
1.0 | 2006/04/23 | 初公開 |