**ls2_1.inc.php [#p6a92d5d]
|RIGHT:100|LEFT:360|c
|~サマリ|ls2 拡張。リストする階層が指定できる。|
|~リビジョン|1.8|
|~対応バージョン|1.4.3|
|~投稿者|[[sonots]]|
|~投稿日|&new{2004-08-10 (TUE) 14:09:19};|

#contents
*説明 [#m17ed6bb]
ls2 拡張((ls2 v1.15 の拡張です。ただし XSS 脆弱性は修正してあります。))。[[自作プラグイン/ls3.inc.php]] とは違い、
ページ名による階層構造だけでリストする純粋な ls2 の拡張です。
MenuBar に #ls2_1(hogehoge/,depth=1,relative) のようにおいておくと便利です。
**標準プラグイン ls2 からの変更点 [#k9cb86b6]
-階層指定可能。
-階層的リスト表示機能。
-相対パス的表示機能。
-pukiwiki.ini.php で設定する $non_list の利用。
-include の無限ループを修正。
-link 時に常に include, title オプションが付加されていたが、単純に同時指定したオプションを利用するように変更。それに伴いリンク名として利用される引数を「オプションと判定されない引数以降のすべての引数」から「オプションと判定されない最初の引数」に変更。
*書式 [#jcb5f796]
 #ls2(パターン[,オプション])

**パラメータ [#r8a06bfd]
-パターン(最初に指定)~
リストするページ名のパターン。省略するときもカンマが必要。省略時はカレントページ+"/"が指定されたことになる。また / を指定した場合はすべてのページにマッチする。
-title~
ページ中の見出しもリストする
-include~
インクルードしているページもリストする
-link~
actionプラグインを呼び出すリンクを表示。このとき、オプションと判定されない最初の引数をリンク名として利用できる。例)#ls2_1(,link,リンクです)
-reverse~
ページの並び順を反転し、降順にする
-compact~
見出しレベルを調整する。
LS2_1_LIST_COMPACT((LS2_1_LIST_COMPACT はファイルの直接編集により設定可能です。))がTRUEの時は常に compact
-depth=\d?[-+]?\d?((\d?[-+]?\d? は正規表現による表記です。\d は数字のことです。))~
階層指定。1 なら 1 階層下のページのみを表示する。
2-4 のような指定も可能 (2,3,4 の意)。2- のように指定すると 2 階層下以下のページ。
2+1 のような指定も可能 (2 とそこから 1 階層下。つまり 2,3 の意)。
//0-2 = false-2 = -2. 1-0 = 1-false = 1-. 2+ = 2+false = 2+0. +2 = false+2 = 0+2.
//0 または - または + は指定しないときと同じ。
//0 becomes false. - = false-false. + = false+false.
-relative~
相対パス的表示
-hierarchy~
階層的リスト表示
-non_list~
pukiwiki.ini.php で定義される $non_list によるリスト排除。
LS2_1_NON_LIST((LS2_1_NON_LIST はファイルの直接編集により設定可能です。))がTRUEの時は常に $non_list を利用する。
現在デフォルトで TRUE です。
-number=\d?[-+]?\d?~
リンク表示件数指定。リクエストにより作成。Blog2プラグインを使用するときに便利らしいです。~
depth オプションと似たような使い方です。''-10 なら頭から10件表示(1-10も同じ)。10 と指定すると 10番目のリンク1つを表示するだけなので注意。''2+10のようにあえて2件目から10件も可能。
title, include の数はカウントせず、ページの数だけカウントしてます。
-except=正規表現~
リストしないページを正規表現にて指定。$non_list だけでは足りないときに使用。
relative の場合でもページ名全体で判定。
ヒント: except=Test|sample → Test または sample を含むページを除く。

*使用例 [#ac62520e]
以降は 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(,hierarchy)
-test/a
--test/a/aa
---test/a/aa/aaa
---test/a/bb/bbb
---test/c/cc/ccc
----
 #ls2_1(,hierarchy,compact)
上位のページが存在していない場合は詰まる。compact は hierarchy または title 用のオプション。
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,hierarchy)
compact を併用しない relative,hierarchy は少しわかりづらい。test/a/aa/c/cc/ccc かと思ってしまう。
-a
--aa
---aaa
---bb/bbb
---c/cc/ccc
----
  #ls2_1(,relative,hierarchy,compact)
-a
--aa
---aaa
--bb/bbb
-c/cc/ccc
----
include, title(+compact), link, reverse に関しては標準プラグイン ls2 と意味合いは同等。
*ダウンロード [#ead9194a]
拡張子の番号をはずして、plugin ディレクトリに放りこんでください。
|リビジョン|日付|変更点|h
|&ref(./ls2_1.inc.php.11,v1.11);|10/27/2004|except オプションの追加|
|&ref(./ls2_1.inc.php.10,v1.10);|10/22/2004|要望にあった表示件数指定機能追加。アンケートのとおり depth オプションには depth= をつけるように変更。下位互換性を考えて今のところ depth= がなくても depth オプションと判断されるようになっています。ついでにソースをほんの少し整えると同時にコメントをちらほら。|
|&ref(./ls2_1.inc.php.8,v1.8);|08/14/2004|無駄な処理があったので削除。preg_replace, ereg_replace を使用しないようにしてわずかながら高速化|
|&ref(./ls2_1.inc.php.6,v1.6);|08/12/2004|ページ名のパターンに / を指定した場合すべてのページをリストするように改良。relativeオプション単独のときの挙動が仕様通りになっていなかったので修正|
|&ref(./ls2_1.inc.php.5,v1.5);|08/11/2004|linkオプション指定時の挙動を修正|
|&ref(./ls2_1.inc.php.4,v1.4);|08/10/2004|linkオプション指定時の挙動を修正|
|&ref(./ls2_1.inc.php.0,v1.0);|08/10/2004|新規|

*悩み点、アンケート [#d6020b1d]
階層指定オプションは \d?[-+]?\d? ではなく、depth=\d?[-+]?\d? のように depth= があったほうがよいか。
数字はこのオプションと判定されるので、link オプション時のリンク名を数字だけにできなかったり、今後数字だけのオプション名が使用できないかも。
#vote(修正したほうがいい[3],今のままでいい[0])
depth= をつけるように修正しました。ただ急に変えても困ると思うので、depth= のない数字もいままで通り depth オプションと判断するようになっています。このため 'link オプション時のリンク名を数字だけにできなかったり' という問題点はいまだ残っています。
いつ下位互換性をなくせばよいのか悩みどころです。
#hr
title の compact と hierarchy の compact はわけるべきかどうか。
現状は分ける場合にオプション名を何にしたらよいのか分からないので一緒にしているだけです。
#vote(わけるべき[1],一緒でよい[0])
わける場合オプション名案もください
#hr
reverse,hierarchy,relative とするとよくわからない表示になる。
これは勘弁してください。
#hr
non_list のデフォルト値を勝手に TRUE にしているがどうか。
#vote(TRUEでよい[3],FALSEでよい[0],自分で設定するのでどうでもよい[0])
#hr
compact のデフォルト値は用例説明に合わせるために FALSE にしているがどちらにすべきか。
#vote(TRUEでよい[1],FALSEでよい[0],自分で設定するのでどうでもよい[0])
#hr
title は headline かなにかほうがわかりやすくないか。title オプションはページの見出しもリストするオプションです。作者はピンときませんでしたが、titleも残さないと問題があるので結局、「変えるほどのことではない」です。
#vote(headlineがいい[0],むしろtitleが一番ピンとくる[1],変えるほどのことではない[0],変えてもいいがtitleも残したほうがいい[0])
他にもっとピンとくるいいオプション名があったら教えてください
*コメント [#h66dd779]
バグ、リクエストなどがあったら教えてください。
-[[upk]] &new{2004-08-14 (SAT) 02:10:14};
~中間階層のページが存在していない場合は、リンクしないで文字として階層を残すように表示するオプションって、できませんかね?特に、ページの有無に拘ってはいません。階層を正しく表示したいオプションなんですけどね。
-[[sonots]] &new{2004-08-14 (SAT) 13:18:57};
~できると思います。それも迷ったんですよね。デフォルトの動作をどちらにしようか。その際にブラケットでくくった場合と同じように ? リンクをつける方法もあると思うのですが、ただのテキストにしたほうがいいでしょうか?オプション名を何にしましょう?
-[[sonots]] &new{2004-08-14 (SAT) 18:34:06};
~あ、思い出しました。元のコードが存在する1ページに対して1リスト(li)のようなコードだったので、1ページ複数リストにしようとすると大分手を加えないといけなくなりそうで、とりあえず辞めたのでした。またおそらく動作が重くなると思われます。気長に待っていてください(追記:学校が始まってしまったので本当に手を付ける暇がなさそうです。申し訳ないです。 9/3)
-[[sonots]] &new{2004-08-14 (SAT) 21:57:09};
~hierarchy以外のオプションも同時に指定したときはどういう動作を期待していますでしょうか? reverse はまた無視することになるとして、
 #ls2_1(,2-,relative,hierarchy)
は現在
-[[a/aa]]
--[[aaa]]
--[[a/bb/bbb]]
--[[c/cc/ccc]]

なわけですが(compactがないので少しわかりづらいですが)、
-[[a/aa]]
--[[aaa]]
-a/bb
--[[bbb]]
-c/cc
--[[ccc]]

のようになればよいですか?また、2-,hierarchy だけの場合は
-[[test/a/aa]]
--[[test/a/aa/aaa]]
-test/a/bb
--[[test/a/bb/bbb]]
-test/c/cc
--[[test/c/cc/ccc]]

で、よいですか?この場合にわざわざ test/c/cc などを出す必要があるでしょうか?そういうオプションだと思ってしまえばそれまでですが。

-[[upk]] &new{2004-08-15 (SUN) 03:17:48};
~わざわざ出す必要はないと思っています。イメージしているのは、Tree なんですけど
-test
--a
---[[aa>test/a/aa]]
----[[aaa>test/a/aa/aaa]]
---bb
----[[bbb>test/a/bb/bbb]]
--c
---cc
----[[ccc>test/c/cc/ccc]]
~こんな感じなんですよね。仮想階層の1階層のみを表示して整理したイメージです。
-[[sonots]] &new{2004-08-15 (SUN) 12:58:23};
~それはいいのですが、他のオプションと併用したときの動作をどうすればよいかです。upk さんの例は #ls2_1(test,relative,hierarchy,新しいオプション) のときの動作でそのようにさせるつもりです。私の書いた上の仕様でよろしいでしょうか? #ls2_1(test/,2-,hierarchy,新しいオプション) のときに test/c/cc もださないと一体どういう意味合いのオプションなのかわからなくなるのでやはり表示させることになると思います。
-[[sonots]] &new{2004-08-15 (SUN) 13:23:54};
~それとも 2- にもかかわらず仮想的な一階層下のページ名 (test/c など) を出力させたいのでしょうか?他に実際に test/d のようなページがあった場合、2- なのでそのページはリストしないのですが、test/c/cc/ccc があるため test/c は出力するというよくわからないことになってしまいます。
-[[yananob]] &new{2004-08-21 (SAT) 00:51:39};
~[[自作プラグイン]]からの一覧での表示が不正だったので、リビジョンを追加しました。
-このプラグインなかなかいいですね。使わせていただいています。オプションで「日付文字列yyyy-mm-dd」と「行数n」指定で「yyyy-mm-ddの日付のものからn件表示」という拡張は出来ないでしょうか。Blog2プラグインと併用したときにあると非常に便利だと思います。 -- [[jiji]] &new{2004-09-18 (土) 20:41:57};
-すみません。学校が始まってから死んでました。ちょうど pukiwiki.org 移転の時期だったのでコメントがいくつか消えているようです。確か upk さんの要望に関して時間がとれなくて今のところは本当に無理です。すみません。というのを書いたと思います。jiji さんの要望に関して今日だけこれから頑張ってみようと思います。カウンターいれるだけでできるはずですよね。-- [[sonots]] &new{2004-10-22 (金) 10:47:51};
-number= で件数を指定できるようにしました。こういうことでよいのですよね?あとアンケートの結果により、depth オプション指定時に数字だけでなく depth= をつけてもらうようにしました。今のところ下位互換性も考えて depth= がなくてもいままで通り depth オプションと判断されるようになっています。 -- [[sonots]] &new{2004-10-22 (金) 13:22:27};
-しばらく前から使わせてもらってます。number= での件数指定ができるようになって、より便利になりましたね。最初「10 と指定すると 10番目のリンク1つを表示するだけ」なのを見落としていて意図通りにできず悩んでしまいましたが……((ということで、余計なお世話ながらその辺の説明の箇所を強調表示してみました。))。&worried; &br;depth オプション指定時ですが、今後はdepth= 必須にしちゃってもいいんじゃないかなーと個人的には思います。 -- [[sagen]] &new{2004-10-30 (土) 13:40:49};
-calendar_viewerを使って日記の最新5件を表示させています。そのページの始まりに、日記のtitleの一覧をつけたくて利用させていただきました。number=1-5で一覧は出せるのですが、この方法だと一番古いものを5件呼び出してしまいます。これを最新にしたいのですが何か方法はありますでしょうか? -- [[ねこご]] &new{2004-11-01 (月) 16:53:08};
--試してませんが、reverseをつけてみては。 -- [[さばぞう]] &new{2004-11-01 (月) 18:19:12};
--reverseだと、呼び出した5件がリバースされるみたいです・・・・・。 -- [[ねこご]] &new{2004-11-01 (月) 22:26:36};
--なるほど。失礼しました。 -- [[さばぞう]] &new{2004-11-01 (月) 22:46:15};
--ページを降順で抽出するオプションdescendingを追加してみました。試してみてください。&ref(ls2_1.inc.php.diff); -- [[さばぞう]] &new{2004-11-02 (火) 13:33:19};
---抽出後ソートされるので、出力を降順にするにはやはりreverseが必要です。 -- [[さばぞう]] &new{2004-11-02 (火) 13:40:29};
--ls2_1.inc.php.diffで思う通りに動きました。ありがとうございました。 -- [[ねこご]] &new{2004-11-02 (火) 16:03:25};
-title表示の表示件数を指定できたらうれしいです。 -- [[みず]] &new{2004-12-01 (水) 10:14:06};
--[[続・質問箱/471]] -- &new{2004-12-14 (火) 20:54:37};
-有用なプラグイン、ありがとうございます。一覧にNew表示を加えることはできませんでしょうか。 -- [[しか]] &new{2004-12-07 (火) 12:50:42};

#comment


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.123 sec.

OSDN