Comment:Plugin/lsx.inc.php

Top > Note > Plugin > lsx.inc.php
Table of Contents

アイデア

SummaryStatusVotePriorityLoadIdea Note
non_list=off の撤去吟味$non_list を表示されたくないプライベートな設定と考えると、$non_list ページを表示できてしまう non_list=off は存在しない方が良い。一方、:config など中を見られても構わないが、リストには邪魔なページを隠すだけの目的と考えると、non_list=off はあってもよい。$non_list がどちらを本来の意図とするのかが問題となる。撤去する場合でも、設置ページが $non_list ページならばその下位のページが $non_list ページでも表示できる、というような処理を追加することになるだろう
:config/PageReading の利用で階層構造を考慮するか否か吟味1
date のフォーマット指定 (new プラグインを使用しない)待ち3むしろ最初は自前実装したのだが、消してしまった (T-T
date, new の表示位置吟味
related 機能吟味
/ に特別な意味をもたせた natcasesort完了/ はページ階層の意味で使用される特別な文字列。マルチバイト(日本語)を使用していると、Hoge, Hoge/ほげ, Hogeほげ の順になって欲しいところが、Hoge, Hogeほげ, Hoge/ほげ の順になることがあるので対応する必要がある。sort 関数の場合は / を \0 に置換すると簡単に実現できたが、natcasesort ではその手法は使えなかった。v2.1a3

Comments

  • 以前 Note/Old/Plugin/ls2_1.inc.php
  • 重宝しています。パラメータを何か指定しないと動作しないようですが、仕様でしょうか? -- ナオスキィ? 2006-07-04 (火) 15:17:08
    • それはおかしいですね。こことテスト環境では #lsx だけで動きますが -- sonots 2006-07-05 (水) 00:29:04
  • 使わせていただいております。リストの並び順を:cofig/PageReadingを参照して調整できるようにはならないでしょうか? -- Maz? 2006-09-17 (日) 02:48:40
    • PageReading に記述されている読み方を利用したソートをするということですか?それとも PageReading の記述順に意味をもたせるということですか?どちらにしろ検索にかなり時間がかかる気がします(全ページx全読み方)。とりあえず今は忙しくて結局できないのですが、ページに別名を持たせてソート順を調整したりできると楽しそうではありますね。Software? では「01.ページ名」 なんて番号を頭につけて調整していたりしますし。 -- sonots 2006-09-16 (Sat) 12:02:16
    • ご返事ありがとうございます。PageReadingに記述されている読み方を利用したソートを考えてました。というよりも漢字を使ったページ名をちゃんと名前順にしたい、気持ち悪い、というのが始まりですが。tag.inc.phpと併用して例えばWikipediaのCategoryのようなiインターフェイスにならないかなと思いまして。 -- Maz? 2006-09-17 (日) 21:18:56
    • そういう需要なら kakasi または chasen をまず使用したほうがいいですね。PageReading はそれらの補助的なものだったかと思います。本体同梱の list.inc.php だったかを参考にすればとりあえずはささっとできるかとは思いますが、wikipedia のようなインターフェースにはできないですね。本当にただ読み方順に並べるだけになると思います。 -- sonots 2006-09-17 (Sun) 08:07:25
    • wikipedia のようなインターフェースを引き合いに出したのは、「自然に日本語のアイウエオ順に並んでいる」という程度の考えで、外観がどうとかサブカテゴリがどうとかはあまり考えてませんでした。PageReadingもせっかく読みが登録できるのだから、それを読んでソートしてくれないかなあと思っただけです。基本的に「本当にただ読み方順に並べるだけ」が望みです。*1 lsx.inc.phpもtag.inc.phpも今は便利に使わせていただいてます。メンテナンスする際にちょっと思い出していただければ幸甚です。 -- Maz? 2006-09-19 (火) 00:33:49
    • rev.10a において対応しました。 -- sonots 2006-12-24 (Sun) 03:55:19
    • PukiWiki API の作りが悪いのでやっぱり「保留」にさせていただきます。ほんの2行本体を修正できれば問題なしなのですが・・・。 -- sonots 2006-12-28 (木) 15:55:32
    • 現在また対応しなおしております。ただ階層構造を考慮するかどうかなど、悩むべき点はありそうです。http://www.revulo.com/bbs/wforum.cgi?mode=allread&no=234&page=0 -- sonots 2008-07-17 (金) 15:55:32
  • 素晴らしいです。一つだけ要望があるのですが、ls2 との互換性のために、リストのアンカーが index.php?cmd=read&page=ページ名 となるようにして頂けませんでしょうか? -- noname? 2006-12-04 (月) 16:16:38
    • むしろ通常リンクとの互換性のためにあえて index.php?ページ名にしています。そういう要望が昔ありました。現在の仕様の方が理に叶っていると思いますので、むしろ ls2 の修正に対して本家にポストすることをお勧めします。 -- sonots 2006-12-03 (Sun) 21:33:42
  • 設定方法で不明な点がありますので、お願いします。
    文書名で「分類1/分類2/文書名」として、分類1及び分類2を1文字で設定しています。分類2は、50音で設定してあるのですが、各行ごとで分類する為に
    #lsx(filter=[あいうえお]/)
    等のようにとした場合に文書名が「分類1/あ/あかさたな」のように分類2のコードが含まれているときに本来ならあ行にだけ分類したいにも関わらずか行、さ行、た行、な行にも表示されてしまいます。 -- 2006-12-10 (日) 00:26:15
    • php の ereg 関数を使用してます。よって日本語などの2バイト文字を正規表現中に含むのは難しいです。mb_ereg を使用するようにすれば対処できるかもしれません。いつかやってみます。 -- sonots 2006-12-10 (日) 11:09:58
    • とりあえず filter=(あ|い|う|え|お)/ ではだめでしょうか。試してないですが。正規表現のテクニックまではサポートしきれないで、自分で php の ereg 関数でいろいろ試してみてください。-- sonots 2006-12-10 (日) 11:09:58
    • 回答ありがとうございます。ただ残念ながらご提示いただいたものだと
      lsx(): The # of open and close parentheses of one of your arguments did not match.
      とでます。もう少し考えてみます。 -- 2006-12-11 (月) 20:59:01
    • あれ、filter はそういうチェックはしていないはずだったんですが、おかしいですね。mb_ereg にすることも含めていつか見てみます。 -- sonots 2006-12-11 (Mon) 07:20:17
    • と言うわけであの後、色々とやってみて、以下のような形で落ち着きました。
      filter=^あ/|^い/|^う/|^え/|^お/
      ちょっとスマートじゃないですね。(^^;とりあえず、現状これで正常に動いてるのでこれで良しとしておきます。mb_eregの件も待っておりますので、よろしくお願いします。(^^) -- 2006-12-12 (火) 10:37:44
    • 修正しました。mb_ereg 対応しました。 -- sonots 2006-12-24 (Sun) 03:55:19
  • マルチバイト文字を含む階層表示で不具合があるので、修正していただけますでしょうか。"あいう/あ","あいうえ/あ" というページを作成して lsx で表示させると、「あいうえ」の階層が「あいう」に含まれてしまいます。 -- noname? 2007-02-01 (木) 18:39:36
    • 「prefix=あいう」 にしていませんか? 「prefix=あいう/」 ではなく。それならば仕様通りです。 -- sonots 2007-02-01 (Thu) 09:19:40
    • 上の書き込みですが、正しくは「『あいう』が『あいうえ』に含まれてしまう」でした。やはり "prefix=あいう/" で起こってしまいます。 -- noname? 2007-02-04 (日) 13:09:12
    • 自分の環境ではならないですけどねぇ。理論的にも 「あいうえ」と「あいう/」は文字コード列が違うのでマルチバイト関係なくマッチしないはず。 -- sonots 2007-02-04 (日) 13:56:50
    • こうなります。あいう? あいうえ? あいう/あ? あいうえ/あ? -- sonots 2007-02-04 (日) 14:04:48
  • どうでもいいことですが,「ダウンロード」リストの年が 2006 のままですね. -- 2007-02-13 (火) 20:31:22
    • 本当だ。ありがとうございます。修正しました(他のページにありそうだな・・・) -- sonots 2007-02-13 (Tue) 12:53:28
  • 日付の表示をページ名の左側にできませんか?ページ名の右側だとガタガタになって非常に見づらいです。あと時間の書式が変更できればいいなぁと思います。日付は表示したいけど時間まではいらないので。 -- 2007-02-13 (火) 23:55:16
    • 左に配置というよりは、整えばいいのですよね?new=left|right, date=left|right みたいな配置オプションを1つ1つに付けるのはあまりやりたくないので、何かいい方法がないか考えて見ます。テーブルは無理だし・・・。日付の書式は new プラグインの設定を再利用したかったので今のような、new プラグインと同じ書式になっています。正直自前で実装したほうがソースコードがすっきりしていいのですけどね。new プラグインを使用するのをやめて、フォーマットをプラグイン中で設定できるようにするのはありかもしれません(オプションではなく)。今は忙しいのでいつか暇がでてきて他に優先されるものがない場合、両方やってみます。 -- sonots 2007-02-13 (Tue) 12:53:28
  • PHP5固有の現象だと思いますが、lsxを複数回別のパラメータで呼び出すと、前のパラメータが残っているような動作をしております。この理由ですが、PHP4と5ではオブジェクトのコピーの動作が変わっていて、$b=$a;がオブジェクトの値渡しから、オブジェクトの参照渡しに切り替わっているためではないでしょうか。
    この場合、make_link.php の InlineConverter::get_clone()にあるように、$b=clone $a; とすると動作するようです。(ちょっと修正して確認したところこの修正では動作しませんでした。orz) -- Kjm? 2007-06-05 (火) 11:27:49
    • うーむ、$options = $default_options; のところで参照渡しになっているということでしょうか?ためしに array を代入するコードを書いてみたのですが php4 でも php5 でもオリジナルに影響はでませんでした。もしかして plugin_lsx_init が呼ばれていなかったりしますか?特にクラスオブジェクトのコピーはしてないんですよね。 -- sonots 2007-06-05 (火) 13:19:12
    • 試してみました。 plugin_xxx_init が一度しか呼ばれてないですね。init はプラグイン実行毎に毎回呼ばれるはずなのですが。pukiwiki 本体のバグっぽいですね。とりあえず plugin_lsx_convert 内の global $plugin_lsx; を $plugin_lsx = new PluginLsx(); に変えて置いてください。 -- sonots 2007-06-05 (火) 13:49:10
    • 解析終了しました。問題1.本家では init はプラグイン実行毎に毎回よばれるが、Plus! では一度の PukiWiki 実行につき一度だけ。問題2.php4 では call_user_func_array(array($object, 'func'), $array); のように呼ぶとこの $object は値渡しになるが、php5 では参照渡しになる。これは正直 $object->func($array[0], $array[1] .... ) の代わりのつもりだったので $object の保持している値は無論変わるものだと思っていました。そしてそれを init 関数で初期化してリセットしているつもりでした。つまり、php4 + Plus! の場合は思いがけず動作していた模様です。php5 + 本家の動作が意図していた動作でした。php4 + 本家は必要以上に初期化している感じでしょうか。拙作の大多数のプラグインを修正しなければいけなさそうです (..; -- sonots 2007-06-05 (火) 15:40:22
    • 修正しました。 -- sonots 2007-06-05 (火) 16:23:44
    • 素早い対応ありがとうございます。 http://jpn.nanjingpedia.com/wiki/ にて確認したところ、バッチリ動いております。 このサイトはPHP5でしか動かないしょぼい改造しているので本当に助かりました。 -- Kjm? 2007-06-06 (水) 01:24:00
    • ・・と思ったら、アクションでエラーが出るようになりました。 1234行目をコメントアウトすると、動くようになるようです。 -- Kjm? 2007-06-06 (水) 01:52:28
    • 申し訳ない。消し忘れです。修正しました。 -- sonots 2007-06-06 (水) 04:44:12
    • ご対応ありがとうございます。 ガンガンつかわさせてもらいます。 話はかわりますが読みのソートは、TITLE: と &ruby を組み合わせると上手くいくような気がしてます。 -- Kjm? 2007-06-06 (水) 20:05:48
    • TITLE: の &ruby() をlsxから表示できるように改造したところ、いい感じになりました。(ソートは未確認・・) ブラケットからのリンク作成時も、自動的にlsxのキャッシュから、TITLE: の &ruby() を呼び出すと、良さそうですのでトライしてみます。 -- Kjm? 2007-09-16 (日) 05:08:34
  • #relatedの代用となるオプションがほしいです。 #relatedの場合、実ページ名で表示されるのですが、lsxのlinkstr=headlineのような表示にしたいので。 -- Ilfa? 2007-12-25 (火) 19:52:29
    • よっぽど暇ならやってみます。 -- sonots 2008-01-05 (土) 20:26:24
  • :で始まる隠しページでは、#lsxは作動しない仕様なのでしょうか。:configのページの#ls2を#lsxに書き換えると、なにも表示されないのです・・・? (T-T -- きしゅう? 2008-01-23 (水) 15:27:58

    • 標準プラグイン ls2 との違い」に書いてあります。pukiwiki.ini.php で設定する $non_list の利用。 -- Ilfa? 2008-01-23 (Wed) 11:16:57
    • non_list=off オプションを使用してください。 -- sonots 2008-01-24 (木) 07:20:33
      • 勉強不足でした。ありがとうございます。 -- きしゅう? 2008-01-26 (土) 10:21:04
  • dateオプションで日付(年月日と時刻)が表示されますが、これを年月日だけにできないでしょうか?別オプション(例えばtimeなど)で、時刻も表示できるようになどはできないでしょうか?calerldar2プラグインと組み合わせて、イベントとかのリストに使えないかなぁと考えているのですが。 -- mkawano? 2008-02-12 (火) 09:45:12
    • 今は別オプションではできません。pukiwiki.ini.php の $date_format と $time_format を変更してください($time_format を消す)。他のプラグイン(コメントプラグイン)などにも影響が出ます。再利用しているだけなので。今後独自でやるようにしたら、汎用性を高くして date=フォーマット ですかね。でもその仕様だと玄人志向すぎるかな。 -- sonots 2008-02-13 (水) 00:54:31
      • そうですか、他のプラグインにも影響が出るとなると、難しいですね。カスタマイズしかないかもしれませんね。 -- mkawano? 2008-02-21 (木) 15:58:49
      • 今はそうですね、申し訳ない。 -- sonots 2008-02-22 (金) 14:19:15
  • sort=reading で読み順ソートしたとき、たとえば XXX→02_XXX, YYY→01_YYY, YYY/Child→YYY/01_Child みたいに読み設定すると、単純に全ページをソートしているだけであるため、ツリー構造がおかしくなります(XXXの下にYYY/Childがぶら下がる)。 この例では YYY/Child→01_YYY/01_Child とすればOKですが、子孫ページが増えるとそのすべてに読み設定をしなければならなくなります。 PukiWikiの get_readings 関数が悪いと言えばそれまでですが、一応報告させて頂きました。 -- ルーチェ? 2008-07-04 (金) 07:25:30
  • こんなしょぼい質問で申し訳ないのですが、lsx を含め、試したプラグインですべて画面が真っ白になってしまいます。エラーログなど覗いてみたのですが、なにも表示されず、HTTPのヘッダしか返ってきていません。スキンのwhiteflowと相性が悪いか、gentoo で PHP のオプションをたくさん削っているからと推測しているのですが、なにか手がかりを見つける方法などありませんでしょうか。 -- 2009-10-31 (土) 21:16:01
  • 非常に使いやすいプラグインを提供して頂き感謝しております。要望といいますか思いつきのアイデアなんですが、LSXでリストアップした各ページを別のプラグインに渡すようなことはできないでしょうか?#lsx(num=1:2,include)の要領で#lsx(,&total_comment())のような感じで別のプラグインを呼び出せたりできると嬉しいんですが。。phpやPukiwikiの理解不足で簡単にできたり、逆にトンチンカンなことを申し上げている場合はご容赦ください。 -- Oggi? 2009-11-03 (火) 20:01:39
  • 使いやすいプラグインで大変重宝しています。質問なのですが、次のようなページ群があるとして
    /A1
    /A1/xxx
    /A1/xxx/A3
    /B1/xxx/B3
    これらを次のように、xxxが含まれているページ+その上位ページを
    - [A1] (←これがリンクになって欲しいです)
    -- [xxx]
    --- [A3]
    - B1 (←存在しないページはリンクしない)
    -- xxx (←存在しないページはリンクしない)
    --- [B3]
    のようにリンクして表示する事はできるのでしょうか。 試しにオプションを「 prefix=/,filter=xxx 」とすると、名前にxxxが含まれていないA1ページがリンクされません。 -- Tkn? 2009-12-04 (金) 21:57:37
  • 大変重宝しております。ただ一つ問題が。depthを指定すると、何も表示されなくなってしまいます。なぜでしょう?? -- pinpong? 2010-04-20 (火) 17:27:40
  • 11月
    11月/3日
    12月
    12月/5日
    を逆順ソートすると、
    --12月/5日
    -12月
    --11月/3日
    -11月
    となってしまいます。逆順の場合でも子ページの下に孫ページををつるすことはできませんでしょうか。 -- Atsushi? 2012-02-28 (火) 03:54:55
  • 私の会社でフルに使用させて頂いております。大変重宝なものをありがとう御座います。 new表示をさせてたいのですが、表示画されません。何か原因は有るでしょうか? 環境は、「openSESE11.2(64bit)+xampp-linux-1.6.7+lsx-v2.1」です。他の追加プラグインは入っていないのですが。 よろしくお願いします。  -- Yoshi? 2012-07-25 (水) 13:26:53
  • もう作者の方もここをご覧になっていないかもしれませんが、私もnewが表示されない問題に遭遇し、解決できましたので書き記しておきます。環境はPHP5.1.6+Pukiwiki1.4.7+lsx-v2.1です。 lsx-v2.1/sonots/metapage.class.phpを次のように修正しました。
    metapage.class.php: 440行目~
        function newdate($timestamp)
        {
            // ToDo: Implementing by myself to get more flexibility
    -        $date = PluginSonotsMetapage::date($timestamp);
    +        $date = preg_replace('/\(.+\)/', '', PluginSonotsMetapage::date($timestamp));
            return do_plugin_inline('new', 'nodate', $date);
        }
    $date変数に入る該当ページの更新日時に (月) のように日本式の曜日が入っていると、newプラグイン内部の変換処理(strtotime関数)がうまくいかないようです。上のようにlsx側で曜日を取り除いてやるとnew!が表示されました。 -- Su++? 2014-02-07 (金) 16:30:03


URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

*1 list.inc.phpの日本語ソートもchasenなりが無いとPageReadingに登録した読みの最初の1文字しか解析してくれないようなので、本体のほうにも何とかして欲しかったり。chasen入れろという話はごもっともXD