#author("2016-10-15T07:13:50+09:00","","")
**lsx.inc.php [#tc35c423]
説明 

ページをリストアップするプラグイン ls.inc.php の拡張です。ls2.inc.php の拡張でもありそれの拡張であった旧 ls2_1.inc.php の拡張でもあります。

ページ階層化機能 を使用している PukiWiki で便利です。

標準プラグイン ls2 との違い 
•相対パス的表示。
•階層的リスト表示。
•階層指定。
•表示件数指定
•pukiwiki.ini.php で設定する $non_list の利用。
•正規表現によるページのフィルタ
•正規表現による除外ページ指定
•更新日時表示
•New 表示
•更新日時によるソート
•link オプション消去
•複数ページ include

などなど

競合相手 
•org:自作プラグイン/lls.inc.php - 横並びもできる階層型ページ一覧表示プラグイン ◦横並びは却下しました。横並びにしたい場合は CSS を頑張って編集してください。

•org:自作プラグイン/treepagelist.inc.php - エクスプローラのようなツリーを実現します。 ◦javascript (消失)

•org:自作プラグイン/ls3.inc.php - お手軽な階層一覧表示 ◦ページ名による階層表示ではなく、ページの先頭にリンクをおき、リンクされたページを子ページと判断するらしい。

•org:自作プラグイン/listing.inc.php - 多機能ページ一覧表示 ◦ページ名の一覧そのものよりも付加情報に着目しているように見受けられる。

•org:自作プラグイン/pagetree.inc.php - JavaScript を使わないツリーメニュー ◦MenuBar での設置目的。このサイトでも使用している。

•dev:BugTrack/745 - 他

使い方 

書式 
#lsx([オプション])
#lsx(接頭辞[,オプション])

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

prefix=接頭辞 or 接頭辞 

リストするページ名の接頭辞。 省略時は カレントページ+"/" が指定されたことになる。また / を指定した場合はすべてのページにマッチする。

相対指定(例えば Plugin ページにおける ./lsx.inc.php/ == Plugin/lsx.inc.php/)も可能。

備考:どのオプションにもマッチしない文字列が指定された場合、接頭辞と認識されます。明示的に指定したい場合は prefix=接頭辞 と指定してください。#ls2 互換用。

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=数字 

下位階層指定。depth=1 が直下、depth=2 がそのまた下のイメージ。数字の指定は num と同じ書式。

hierarchy=bool 

階層的リスト表示。デフォルトで有効。

tree=leaf|dir 

末端ページ(leaf)、またはその逆(dir)のようなものを表示する。デフォルトは単純に無効。tree=dir は DOS コマンドの tree のようなニュアンス。

備考:ようなものなので、ページ名を意識して付けていない場合効果は薄いでしょう。

sort=name | date | reading | popular 

ソートの方法。
•name - ページ名によるソート。デフォルト。
•date - 更新日付(上が最新)によるソート。hierarchy は強制的に off になる。
•reading - 「読み」によるソート。「読み」の設定は #c596f56a 参照
•popular - 人気順によるソート。どの人気順を利用するかは popular オプションを使用する。

popular=today | yesterday | recent | total 

sort=popular のオプション。
•today: 今日の人気
•yesterday: 昨日の人気
•recent: 最近(今日+昨日)の人気
•total: トータルでの人気

reverse=bool 

逆順にソートする

non_list=bool 

pukiwiki.ini.php で定義される $non_list によるリスト排除。デフォルトで有効。

注意 この機能により、ページ名が : で始まるような(デフォルトの $non_list 設定)ページで #lsx と記述しても何も表示されません。non_list=off オプションを使用してください。

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) のようにできます。

include=(オプション) 

ページを include する。

備考:この場合ページリストは中止され、include だけされます。
 備考:内部で includex プラグインを使用しています。詳しいオプションは includex.inc.php を参照してください。オプションを複数指定する場合は include=(num=1:10,titlestr=off) のようにできます

linkstr=relative | pagename | basename | title | firsthead 

リンク文字列を制御できます。
•relative | relname - 相対パス的文字列表示(デフォルト)。
•pagename | name | page | absolute - 絶対パス的文字列表示(ls2の動作)。
•basename | base - ページ階層化機能でのベース名部分、例:Note/Plugin/lsx.inc.php -> lsx.inc.php。
•title - 各ページの TITLE: 行で指定された文字列。
•firsthead | headline - 各ページの第一見出しで指定された文字列

備考:title と headline は contentsx.inc.php を使用します。インストールしておいてください。TITLE: とは PukiWiki Plus! において HTML のタイトル<title></title> を設定する書式です。

link=page | anchor | off 

リンク形式。
•page - 通常通りページへのリンク
•anchor - #includex で取り込んだページタイトルへのアンカー。#lsx(include) 用。
•off - リンクしない。

tag=文字列 

tag.inc.php で付けたタグを指定。

tag=タグ1^タグ2 とすることで、共通ページを(積集合 ∩ のイメージ)、tag=タグ1-タグ2 とすることで差ページ(差集合のイメージ)をリスト

備考:hierarchy, prefix は強制的に off になります。
 備考: lsx のタグ機能はおまけのようなもので、過去のなごりに過ぎません。taglist.inc.php を使用してください。

newpage=on | off 

on で新規作成ページのみを、off で新規作成ページ以外をリスト。デフォルトでは単純にスルー。

備考:backup ファイルが作成されているかどうかで新規かどうかを判断しています。

next=bool 

ベータ機能

num オプションで件数を制限した場合に、次のN件、前のN件を表示するためのリンクを表示する

動作例(仕様) 

以下のページ群があったとする。
•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]


#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) [#ya336e6a]
#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 を作ってあります。 popularx.inc.php へ

sort の順序を指定したい 

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

「読み」は :config/PageReading ページで設定します。例えば
-[[Plugin/lsx.inc.php]] Plugin/00
-[[Plugin/includex.inc.php]] Plugin/01

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

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

となります。

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

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

追加
•tree=leaf|dir
•newpage
•tag
•next
•linkstr リスト時の表示形式指定
•link リスト時にリンクを貼るか否か

変更
•#ls2_1(パターン,オプション) -> #lsx(prefix=パターン,オプション) or #lsx(パターン,オプション) ◦#ls2_1(,オプション) -> #lsx(オプション) でオーケー。
◦相対指定が可能

•relative -> linkstr=relative (デフォルト)
•link アクション型へのリンクを作る(削除) => link リスト時にリンクを貼るか否か(追加)
•デフォルトで 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つ表示エンジンを持たなければならない


•インライン型プラグイン消去
•filter, except ◦ページ名全体ではなく、prefix を除いたページ名で評価


変更なし
•non_list
•reverse
•date
•new

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS