最終更新: 2007-07-28 (土) 21:58:07
このページをDeliciousに追加 このページをはてなブックマークに追加 このページをlivedoor クリップに追加 このページをYahoo!ブックマークに追加

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.12007/07/26全ページ名のリストをソートしなくて済むようにして高速化。リンクを相対 URL 形式に変更
2.02007/03/12葉ページの判定処理を追加。階層化されていないページはデフォルトで非表示に
1.62007/03/12NON_LIST, INCLUDE_LIST の設定を追加。SHOW_PASSAGE の設定を廃止。マーカー用の画像を同梱
1.52007/01/09高速化。(3d) のような経過時間はデフォルトで表示しないように変更
1.42006/12/24XHTML 1.1 に準拠していなかったのを修正
1.32006/11/14ページ名に記号が含まれているとソートに失敗することがあったのを修正
1.22006/11/05親ページが存在しない場合に表示が崩れていたのを修正
1.12006/10/29スタイルシートの利用と高速化のために全面書き直し
1.02006/04/23初公開

(Counter:1, Today:1, Yesterday:0)
トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   最終更新のRSS