ls2_1.inc.php

Top > Old > Plugin > ls2_1.inc.php

org:自作プラグイン/ls2_1.inc.php のミラーです。

ls2_1.inc.php の開発は停止します。改めて一から書き直した lsx.inc.php? に移行してください。 -- 2006-05-17 (Wed) 01:30:43

ls2 拡張。リストする階層が指定できる (old)

サマリls2 拡張。リストする階層が指定できる。
リビジョン1.8
対応バージョン1.4.3 - 1.4.5_1
投稿者sonots
投稿日2004-08-10 (TUE) 14:09:19
Table of Contents

説明

ls2 拡張*1org:自作プラグイン/ls3.inc.php とは違い、 ページ名による階層構造だけでリストする純粋な ls2 の拡張です。 MenuBar に #ls2_1(hogehoge/,depth=1,relative) のようにおいておくと便利です。

標準プラグイン ls2 からの変更点(初版)

  • 階層指定可能。
  • 階層的リスト表示機能。
  • 相対パス的表示機能。
  • pukiwiki.ini.php で設定する $non_list の利用。
  • include の無限ループを修正。
  • link 時に常に include, title オプションが付加されていたが、単純に同時指定したオプションを利用するように変更。 それと同時にリンク名として利用される引数を「オプションと判定されない引数以降のすべての引数」から link=リンク名 と指定するように変更 *2

その後の追加機能

  • 表示件数指定機能
  • 除外ページ指定機能
  • 更新日時表示機能
  • New 表示機能
  • 更新日時によるソート機能
  • 正規表現によるページのフィルタ機能
  • インライン表示機能。

書式

#ls2_1(パターン[,オプション])
&ls2_1(パターン[,オプション]);

インラインプラグイン時は強制的に display=inline となります。link オプションも可能です。

パラメータ

  • パターン(最初に指定)

    リストするページ名のパターン。省略するときもカンマが必要。 省略時はカレントページ+"/"が指定されたことになる。 また / を指定した場合はすべてのページにマッチする。 また // を指定した場合は"カレントページ"が指定されたことになる(もろ後付け)。

  • title=true|false

    ページ中の見出しもリストする。 title だけでも title=true の意味になる。

  • include=true|false

    インクルードしているページもリストする。 include だけでも include=true の意味になる。

  • link=リンク表示文字列

    actionプラグインを呼び出すリンクを表示。 link だけの場合は「パターン」の部分を使用したリンク表示文字列が作られる。

  • reverse=true|false

    ページの並び順を反転し、降順にする。reverse だけでも reverse=true の意味にる。
    Note: hierarchy,relative コンビとの併用はきっと納得のいかない表示になります(昇順用に設計されたオプションなので)。

  • compact=true|false

    リストのレベルを調整する。compact だけでも compact=true の意味になる。
    ファイル中の PLUGIN_LS2_1_LIST_COMPACT で初期値を設定できます。デフォルトでは TRUE です。

  • title_compact=true|false

    title オプション用の compact 機能。title_compact だけでも title_compact=true の意味になる。
    ファイル中の PLUGIN_LS2_1_LIST_TITLE_COMPACT で初期値を設定できます。デフォルトでは TRUE です。

  • depth=\d*[-+]?\d**3

    階層指定。1 なら 1 階層下のページのみを表示する。 2-4 のような指定も可能 (2,3,4 の意)。2- のように指定すると 2 階層下以下のページ。 2+1 のような指定も可能 (2 とそこから 1 階層下。つまり 2,3 の意)。

  • relative=true|false

    相対パス的表示。relative だけでも relative=true の意味になる。
    ファイル中の PLUGIN_LS2_1_RELATIVE で初期値を設定できます。デフォルトでは FALSE です。

  • display=hierarchy|flat|inline

    リスト表示形式の指定。hierarchy では見出しのレベルに応じた階層的リスト表示。 flat では見出しのレベルによらず平らに表示。inline では横一列に表示。
    ファイル中の PLUGIN_CONTENTS2_1_DISPLAY で初期値を設定できます。デフォルトは flat です。
    Note1: 下位互換性のため hierarchy, hierarchy=true でも display=hierarchy になるようにしてあります。
    Note2: インライン型プラグインとして使用する場合は強制的に display=inline になります。
    Note3: 以前の動作とあわせるために、あえて見出しには display=flat が利かないようにしてあります。

  • inline_before=文字列

    display=inline 時の前につける文字を設定。
    ファイル中の PLUGIN_LS2_1_DISPLAY_INLINE_BEFORE で初期値を設定できます。デフォルトでは '[ ' です。

  • inline_delimiter=文字列

    display=inline 時の区切り文字を設定。
    ファイル中の PLUGIN_LS2_1_DISPLAY_INLINE_DELIMITER で初期値を設定できます。デフォルトでは ' | ' です。

  • inline_after=文字列

    display=inline 時の後ろにつける文字を設定。
    ファイル中の PLUGIN_LS2_1_DISPLAY_INLINE_AFTER で初期値を設定できます。デフォルトでは ' ]' です。

  • non_list=true|false

    pukiwiki.ini.php で定義される $non_list によるリスト排除。non_list だけでも non_list=true の意味になる。
    ファイル中の PLUGIN_LS2_1_NON_LIST で初期値を設定できます。デフォルトでは TRUE です。

  • number=-?\d+ *4

    リンク表示件数指定。Blog2プラグインを使用するときに便利らしいです。 number=10 で頭から10件表示します。number=-10 のように - をつけると後ろの10件になります。 それでも逆順にはならないので reverse を使用してください。

  • title_number=\d+

    titleの表示件数指定。title_number=10で頭から10件表示します。 現在 - 機能はありません。title_number=1 でページの先頭見出しを表示することになります。 先頭見出しを必ず書く人は多いそうなのでそれを表示するのに便利かもしれません。

  • except=正規表現

    リストしないページを正規表現にて指定。$non_list だけでは足りないときに使用。 relative の場合でもページ名全体で判定。
    ヒント: マッチングには ereg を使用します。 except=Test|sample → Test または sample を含むページを除く。

  • datesort=true|false

    更新日時順(新しいほど上)に表示。datesort だけでも datesort=true の意味になる。
    Note: hierarchy,relative コンビとの併用はきっと納得のいかない表示になります (hierarchy,relative はページ名の昇順ソート時用のオプションなので)。
    Note2: include されるページに対しては無視なので include オプションと併用しても無駄です。
    Note3: 旧 new オプションです。注意してください。

  • date=true|false

    ページの更新日時も表示。date だけでも date=true の意味になる。

  • new=true|false

    New!も表示。new だけでも new=true の意味になる。
    New! が表示される条件は標準プラグイン new の条件を使用しています。 new プラグインが存在しない場合は独自設定(といっても new からコピーしたもの)を使用します。

  • filter=正規表現

    ページパターンをさらに正規表現で限定する。 パターンを / (全ての意味) にしてこちらだけを使うのもあり。
    ヒント: マッチングには ereg を使用します。

ダウンロード

拡張子の番号をはずして、plugin ディレクトリに放りこんでください。

リビジョン日付変更点
filels2_1.inc.php.2701/07/2006次回大きな変更をするときに行うといった要望をあまりにも放っておきすぎだったのでさすがに対応。リンクURLの ?cmd=read&page= を削除しました。報告のあった初期値設定不具合を修正しました。
filev1.2602/28/2005ちょっとコードの書き直し。動作的には何も変わっていません。
filev1.2502/28/2005action プラグイン時の動作が壊れていたので修正。
filev1.2402/25/2005contents2_1?のほうで要望のあったリストの横並び表示(display=inline)を実装。それにより hierarchy=true,false が display=hierarchy,flat,inline に変更。下位互換性のため hierarchy も残してあります。except の正規表現ルールを preg_match から ereg に変更した。'/' に気を使わないですむかも。コードの整理。
v1.2302/25/2005date オプションを new プラグインに依存しないようにきちんと作り直した。New! を日付なしでも表示できるようになった。それにあわせて今までの new オプション(日付順ソート) を datesort に変更し、new は New! を表示するオプションにした。
filev1.2202/07/2005先のマージで title オプション時のアンカーがこわれていたので修正。
filev1.2002/07/2005PLUGIN_LS2_1_HIERARCHY, PLUGIN_LS2_1_RELATIVE でそれぞれの初期値を設定できるようにした。デフォルトは FALSE。
filev1.1902/07/2005ls2 最新版とのマージで new オプションに不具合がでていたので修正
filev1.1802/06/2005filter オプションの実装。オプションの引数に true または false を指定できるようにした。PLUGIN_LS2_1_COMPACT, ならびに TITLE_COMPACT のデフォルト値を TRUE にした。link オプションのリンク名を link=リンク名 で指定するようにした。いくつかのオプションで hierarchy,relative と併用すると納得のいかない表示になっていたのを修正。
v1.1702/06/2005現在の ls2 最新版 v1.23 とのマージ。diff3 使ったけどもうやりたくない。
filev1.1612/26/2004number オプションと new (更新日時ソート)オプションを併用した場合、最新 number 件になるように修正。おもむろに number 件取り出した後に更新日時ソートになってました。
filev1.1512/26/2004更新日時によるソート機能(新しいもの順)を追加。それに伴い、先の new オプション(日付とNew表示)の名前を date に、更新日時によるソート(新しいもの順)を new に変更。
filev1.1412/18/2004先の改造により link オプションの挙動に不具合が出ていたので修正。また new オプション(日付とNew表示)が実はきちんと動いていなかったので修正。
filev1.1312/17/2004depth= がない場合 depth オプションと判断しないように。number オプションの仕様を変更。title_number, title_compact を追加。new オプション(日付とNew表示)を追加。
filev1.1110/27/2004except オプションの追加
filev1.1010/22/2004要望にあった表示件数指定機能(number)追加。アンケートのとおり depth オプションには depth= をつけるように変更。下位互換性を考えて今のところ depth= がなくても depth オプションと判断されるようになっています。ついでにソースをほんの少し整えると同時にコメントをちらほら。
filev1.808/14/2004無駄な処理があったので削除。preg_replace, ereg_replace を使用しないようにしてわずかながら高速化
filev1.608/12/2004ページ名のパターンに / を指定した場合すべてのページをリストするように改良。relativeオプション単独のときの挙動が仕様通りになっていなかったので修正
filev1.508/11/2004linkオプション指定時の挙動を修正
filev1.408/10/2004linkオプション指定時の挙動を修正
filev1.008/10/2004新規

使用例

初版機能

PLUGIN_LS2_1_LIST_COMPACT = FALSE; と設定されているものとして読んでください。 現在はデフォルトで TRUE です。

以降は test というページで記述したものとする。


#ls2_1

とすると以下のように表示されるページ群があったとする。

  • test/a
  • test/a/aa
  • test/a/aa/aaa
  • test/a/bb/bbb
  • test/c/cc/ccc

#ls2_1(,depth=1)
  • test/a

#ls2_1(,depth=1-2)
  • test/a
  • test/a/aa

#ls2_1(,depth=2+1)
  • test/a/aa
  • test/a/aa/aaa
  • test/a/bb/bbb
  • test/c/cc/ccc

#ls2_1(,relative)
  • a
  • a/aa
  • a/aa/aaa
  • a/bb/bbb
  • c/cc/ccc

#ls2_1(,display=hierarchy)
  • test/a
    • test/a/aa
      • test/a/aa/aaa
      • test/a/bb/bbb
      • test/c/cc/ccc

#ls2_1(,display=hierarchy,compact)

上位のページが存在していない場合は詰まる。compact は display=hierarchy 用のオプション。 test/a/bb/bbb, test/c/cc/ccc が詰まっている。

  • test/a
    • test/a/aa
      • test/a/aa/aaa
    • test/a/bb/bbb
  • test/c/cc/ccc

#ls2_1(,relative,display=hierarchy)

compact を併用しない relative,display=hierarchy は少しわかりづらい。test/a/aa/c/cc/ccc かと思ってしまう。

  • a
    • aa
      • aaa
      • bb/bbb
      • c/cc/ccc

 #ls2_1(,relative,display=hierarchy,compact)
  • a
    • aa
      • aaa
    • bb/bbb
  • c/cc/ccc

include, title, link, reverse に関しては標準プラグイン ls2 と意味合いは同等。 ls2 の compact は ls2_1 の title_compact です。

その後の追加機能

ここでも

#ls2_1

とすると以下のように表示されるページ群があったとする。

  • test/a
  • test/a/aa
  • test/a/aa/aaa
  • test/a/bb/bbb
  • test/c/cc/ccc

#ls2_1(,number=2)
  • test/a
  • test/a/aa

#ls2_1(,number=-2)
  • test/a/bb/bbb
  • test/c/cc/ccc

#ls2_1(,except=cc|/a$)
  • test/a/aa
  • test/a/aa/aaa
  • test/a/bb/bbb

#ls2_1(,date)
  • test/a 2004-10-10 (日) 23:03:05
  • test/a/aa 2004-11-30 (金) 12:11:43
  • test/a/aa/aaa 2004-03-03 (月) 16:04:05
  • test/a/bb/bbb 2004-12-26 (水) 23:55:55
  • test/c/cc/ccc 2004-10-11 (月) 01:02:04

と出力されるとする。


#ls2_1(,datesort,date,new)
  • test/a/bb/bbb 2004-12-26 (水) 23:55:55 New
  • test/a/aa 2004-11-30 (金) 12:11:43
  • test/c/cc/ccc 2004-10-11 (月) 01:02:04
  • test/a 2004-10-10 (日) 23:03:05
  • test/a/aa/aaa 2004-03-03 (月) 16:04:05

#ls2_1(,datesort)
  • test/a/bb/bbb
  • test/a/aa
  • test/c/cc/ccc
  • test/a
  • test/a/aa/aaa

#ls2_1(,display=flat)
&ls2_1(,display=flat);

[ test/a | test/a/aa | test/a/aa/aaa | test/a/bb/bbb | test/c/cc/ccc ]

コメント

Please go to ./Note?


*1 ls2 v1.23 の拡張です。
*2 ls2_1.inc.php v1.18 からです。それ以前は「オプションと判定されない最初の引数」でした
*3 \d*[-+]?\d* は正規表現による表記です。\d は数字のことです。
*4 -?\d+ は正規表現による表記です。