使い方

Top > Manual > Plugin > lsx.inc.php > rev310
Table of Contents

書式

#lsx([オプション])

オプション名=bool なオプションは共通して、 オプション名, オプション名=true, オプション名=on でそのオプションが有効になり、オプション名=false, オプション名=off で無効になります。

  • prefix=文字列
    • リストするページ名の接頭辞。 省略時はカレントページ+"/"が指定されたことになる。 また / を指定した場合はすべてのページにマッチする。 相対指定(例えば Plugin ページにおける ./lsx.inc.php/ = Plugin/lsx.inc.php/)も可能。
  • num=数字
    • 表示件数指定。正数は前からN件目、負数は後ろからN件目の意味。
      num=1:10 で先頭1件目から10件目までの意味。num=-10:-1 で後ろ10件目から後ろ1件目までの意味。num=2: で先頭2件目から最後までの意味。
      num=5+2 で先頭5件目から、そこから2件先まで(5,6,7)の意味。
  • depth=数字
    • 下位階層指定。数字の指定は num と同じ書式。
  • hierarchy=bool
    • 階層的リスト表示。デフォルトで有効。
  • tree=leaf|dir
    • 末端ページ(leaf)、またはその逆(dir)のようなものを表示する。デフォルトは単純に無効。tree=dir は DOS コマンドの tree のようなニュアンス。
      備考:ようなものなので、ページ名を意識して付けていない場合効果は薄いでしょう。
  • sort=name|date|reading
    • ソートの方法。name はページ名によるソート。date は更新日付(上が最新)によるソート。デフォルトは name。reading は「読み」によるソート。
      備考:sort=date の場合、hierarchy は強制的に off になります。
      備考:「読み」の設定は:config/PageReading で行います。kakasi または chasen を用いた漢字の読みカナ自動設定は dev:PukiWiki/1.4/マニュアル/一覧表示の五十音順分類 参照。
  • reverse=bool
    • 逆順にソートする
  • non_list=bool
    • pukiwiki.ini.php で定義される $non_list によるリスト排除。デフォルトで有効。
  • except=正規表現
    • リストしないページを正規表現にて指定。prefixを取り除いたページ名で判定。
      ヒント: マッチングには mbstring が利用可能な場合 mb_ereg をそうでない場合 ereg を使用します。 except=Test|sample → Test または sample を含むページを除く。
  • filter=正規表現
    • ページパターンをさらに正規表現で限定する。prefixを取り除いたページ名で判定。 prefix=/ (全ての意味) にしてこちらだけを使うのもあり。
      ヒント: マッチングには mbstring が利用可能な場合 mb_ereg をそうでない場合 ereg を使用します。
  • date=bool
    • 更新日付をページ名の横に表示。
  • new=bool
    • 更新日付に対してNew!も表示。
      備考:設定を再利用するため new プラグインを使用しています。
  • contents=(オプション)
    • ページ内の見出しもリストする。
      備考:内部で contentsx プラグインを使用しているので、詳しいオプションは ../contentsx.inc.php? を参照してください。オプションを複数指定する場合は contents=(num=1,depth=1) のようにできます。contents=(num=1,depth=(1,2)) のように入れ子もできます*1
  • include=(オプション)
    • ページを include する
      備考:この場合ページリストは中止され、include だけされます。
      備考:内部で includex プラグインを使用しています。詳しいオプションは ../includex.inc.php? を参照してください。オプションを複数指定する場合は include=(num=1:10,title=off) のようにできます
  • linkstr=relative|absolute|basename|title|headline
    • リンク文字列を制御できます。
      relative で相対パス的文字列表示(デフォルト)。
      absolute で絶対パス的文字列表示(ls2の動作)。
      basename でページ階層化機能でのベース名部分、例:Note/Plugin/lsx.inc.php -> lsx.inc.php。
      title で各ページの TITLE: 行で指定された文字列。
      headline で各ページの第一見出し。
      備考:title と headline は ../contentsx.inc.php? を使用します。インストールしておいてください。TITLE: とは PukiWiki Plus! において HTML のタイトル<title></title> を設定する書式です。
  • link=page|anchor|off
    • リンク形式。link=page は通常通りページへのリンク。link=anchor は #lsx(include) 用。取り込んだページタイトルへのアンカー。link=off はリンクしない。

ベータ機能

  • tag=文字列
    • ../tag.inc.php? で付けたタグを指定。tag=タグ1^タグ2 とすることで、共通ページを(積集合 ∩ のイメージ)、tag=タグ1-タグ2 とすることで差ページ(差集合のイメージ)をリスト
      備考:hierarchy, prefix は強制的に off になります。ベータ機能です。たぶん将来的には別のプラグインに移送されます。

アルファ機能

  • newpage=on|except
    • on で新規作成ページのみを、except で新規作成ページ以外をリスト。デフォルトでは単純に無効。
      備考:backup ファイルが作成されているかどうかで新規かどうかを判断しています。
  • next
    • num オプションで件数を制限した場合に、次の5件、前の5件を表示するためのリンクを表示する

動作例

以下のページ群があったとする。

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

test というページで記述したものとする。[] はリンクの意。


#lsx
  • [a]
    • [aa]
      • [aaa]
    • bb
      • [bbb]
  • c
    • cc
      • [ccc]

#lsx(prefix=test/)
  • [a]
    • [aa]
      • [aaa]
    • bb
      • [bbb]
  • c
    • cc
      • [ccc]

#lsx(hierarchy=off)
  • [a]
  • [a/aa]
  • [a/aa/aaa]
  • [a/bb/bbb]
  • [c/cc/ccc]

#lsx(tree=leaf,hierarchy=off)
  • [a/aa/aaa]
  • [a/bb/bbb]
  • [c/cc/ccc]

#lsx(tree=dir)
  • [a]
    • [aa]
    • bb
  • c
    • cc

#lsx(depth=1)
  • [a]

#lsx(depth=1:2)
  • [a]
    • [aa]

#lsx(depth=2+1)
  • a (←注目)
    • [aa]
      • [aaa]
    • bb
      • [bbb]
  • c
    • cc
      • [ccc]

#lsx(num=1:2)
  • [a]
    • [aa]

#lsx(num=-1:-2)
  • a
    • bb
      • [bbb]
  • c
    • cc
      • [ccc]

#lsx(num=(1:2,4))
  • [a]
    • [aa]
    • bb
      • [bbb]

#lsx(except=cc|aaa$)
  • [a]
    • [aa]
    • bb
      • [bbb]

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

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

#lsx(sort=date,new)
  • [a/bb/bbb] New
  • [a/aa]
  • [c/cc/ccc]
  • [a]
  • [a/aa/aaa]

#lsx(depth=1:2,contents=(num=1))
  • [a]
    • 見出し
    • [aa]
      • 見出し

#lsx(num=1:2,include)
#includex(a)
#includex(a/aa)

の結果が出力される。

FAQ

#ls または #ls2 を一度に置き換えたい

プラグインの置き換え用プラグインとして replaceplugin.inc.php を作成してありますので利用してみてください。

ひょっとして recent プラグイン変わりに使える?

**recent(10)
#lsx(prefix=/,sort=date,num=1:10)

のように使用すれば同じような動作にはなります。しかし recent プラグインはキャッシュ機構を持っていて動作が高速なのと特別な表示インターフェースを持っているので recent プラグインを使用することをおすめします。

MenuBar に設置しても良い?

ls 系プラグイン全般は実行毎に毎回全てのページ名を処理し直します。 ページが多い場合中々処理が重くなるので MenuBar に設置することはお奨めしません。

それでも MenuBar に設置したい場合は止めはしませんが、私ならば ecache.inc.php プラグインを使用して少しでも PukiWiki の軽量化を狙います。

#ecache(page=MenuBar){{
#lsx(prefix=/,depth=1,tree=dir)
}}

といいつつ、この Wiki では同じく ls 系の revulo:pagetree.inc.php を MenuBar に設置していたりします。ページ数が 100 もないので大丈夫でしょう。

popular プラグインでも同じような機能を使いたい

暫定版ですが、lsx を使用した popular プラグイン拡張 popularx を作ってあります。 もちろん lsx 必須です。

書式

#popularx(total|today|yesterday|recent[,lsx options])
  • prefix=/ デフォルト
  • hierarchy=off 固定
  • num=1:10 デフォルト
  • sort 使用不可 (popular 数でソート)

以下のファイルを右クリックから保存し、plugin ディレクトリにおいてください。常に開発版です。

What's new viewcvs

TIPS: 気にしたことがなかったかもしれませんが、popular 系プラグインも ls 系プラグインと同等の処理時間がかかります。MenuBar に total,today,yesterday と3つ設置すれば3倍かかるかもしれません。上で記述 したように ecache.inc.php プラグインを使用して一時間毎更新にしたりすると良いのかもしれません。

sort の順序を指定したい

「読み」を設定し、sort=reading を指定すると、sort の順序を指定したような動作にすることが可能です。

「読み」は :config/PageReading ページで設定します。例えば

-[[Plugin/lsx.inc.php]] Plugin/00
-[[Plugin/includex.inc.php]] Plugin/01

のように設定すれば、通常の sort=name ではページ名の文字列順にソートするため、

の順番になるのですが、sort=reading とすると「読み」の文字列順にソートするため、Plugin/00 と Plugin/01 を比べて

となります。

「読み」の本来の用途は、漢字の読みを設定することによる50音順での sort のサポートです。 kakasi または chasen を用いた漢字の読みカナ自動設定は dev:PukiWiki/1.4/マニュアル/一覧表示の五十音順分類 を参照してください。:config/PageReading の設定はかき消されることはない(はず)です。

旧 ls2_1.inc.phpからの変更点

  • #ls2_1(パターン,オプション) -> #lsx(prefix=パターン,オプション)
    • #ls2_1(,オプション) -> #lsx(オプション)
    • 相対指定が可能
  • relative -> linkstr=relative (デフォルト)
  • デフォルトで hierarchy
    • 存在していない上階層のページを補完
  • datesort -> sort=date
  • depth=2-5 -> depth=2:5
    • depth=-1:-5 (最後から、最後から5番目まで) が可能に
    • depth=-1+5 なども可能
    • depth=(1,3,5:9) のように複数指定も可能
  • number -> num
    • number=10 (10個) ではなく num=1:10 (depth と同じ書式)
  • title 系オプション -> contents=(contentsx のオプション)
    • プラグイン contentsx を呼ぶ
  • include (#include しているページ名もリスト) -> include=(include のオプション) (#include する)
    • ls2_1 の include は contents=(include,depth=0) で見た目は同じになるかもしれない(見出しも探すので処理は重い)
    • 実質消去され、各ページを include するオプションができたと思ってもらいたい
  • compact 消去
    • hierarchy が上階層のページを補完するようになったので用なし。
  • display 消去
    • inline 却下
      • これ1つのために inline_before, after 等のオプションとインライン型プラグインサポートと、もう1つ表示エンジンを持たなければならない
  • link 消去
    • これのためにアクション型プラグインと、もう1つ小さいが表示エンジンを持たなければならないし、そもそも使わない
  • アクション型プラグイン消去
  • インライン型プラグイン消去
  • filter, except
    • ページ名全体ではなく、prefix を除いたページ名で評価
  • tree=leaf|dir

変更なし

  • non_list
  • reverse
  • date
  • new

*1 pukiwiki プラグインは csv チックな入力 "contents=num=1,depth=1" をサポートしますが、"contents="num=1,2",depth=1" のように入れ子にできなかったので () サポートをわざわざ作った。