トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BugTrack-plugin/184

ページの作成や編集にはユーザ登録が必要です。

カタログ・プラグイン

  • 投稿者: KG
  • カテゴリ: 新規
  • 優先度: 普通
  • 状態: 提案
  • 日時: 2005年03月04日 18時40分50秒

 内容

  • 表示中のページを階層形式(?という表現が正しいかどうかはわかりませんが)で表示します。{{catalog}}
  • 階層化されたページの階層情報を指定された深度に従って一覧表示します。{{catalog_list}}

 インストール方法

添付ファイルを解凍し、各ディレクトリに展開してください。また、プラグイン設定画面で catalog を有効にしてください。

 使用方法

階層表示したいWikiページの名前に上位階層名と区切り文字を用いることでカタログ表示が実現します。

テンプレート

このプラグインでは2つのテンプレートを使用します。catalog_list.tmpl, catalog_action.tmpl です。

  • catalog_list.tmpl - {{catalog_list}}プラグインで使用されます。表示方法を変更したい場合には修正してご利用ください。
  • catalog_action.tmpl - CATALOGアクションで使用されます。階層の途中のページが存在しない場合にCATALOGアクションが補完して表示します。表示方法を変更したい場合には修正してご利用ください。
catalog

表示中のページ名を区切り文字で区切ったページリンクとして表示します。

{{catalog [区切り文字]}}
  • Headerページ等で指定して利用します。
  • ページ名(Sandbox/Test1/Test1-1/Test1-1-1)を表示した場合は、以下のような情報が出力されます。
Page :: Sandbox / Test1 / Test1-1 / Test1-1-1
  • 各区切り文字で区切られた文字列は、各階層のWikiページとしてリンクされます。
  • リンク先のページが見つからない場合は CATALOGアクションへのリンクになります。この場合は、リンク先(CATALOGアクション)で、下位の階層情報が表示されます。
catalog_list

ページ階層情報をカタログ表示します。

{{catalog_list [ページフィルター[,深度[,区切り文字[,フィルター部の表示/非表示]]]]}}

ページフィルターで指定したページ名ではじまるページ一覧を深度数値に従って表示します。深度は区切り文字をもとに計算されます。

  • Menu, Header, Footer 等で使用すると目次のようなページが不要になります。
  • ページフィルター(default:<PageName>) : ページ・フィルタリング情報を指定します。(例:Sandbox, Sandbox*, ...)
  • 深度(default:1) : 表示する階層を指定します。-1を指定した場合は全てのフィルタリングされたページ名が表示されます。
  • 区切り文字(default:"/") : 階層表現に使用する区切り文字を指定します。
  • フィルター部の表示/非表示(true/false) : フィルタリングされたページ一覧を表示する場合に ページフィルターに指定した名前を含めた/除いた表記にします。
{{catalog_list Sandbox,2,/,true}}

の場合

Sandbox / Test1 / Test2
Sandbox / Test1 / Test3

と表示されます。

  • wiki.cgi?action=XXXX処理中はページフィルタを指定している場合のみ表示されます。
catalog_view

ページ階層の直下のページを一括表示します。

{{catalog_view [ページフィルター[,区切り文字]]}}
  • 表示中のページもしくは、指定したページフィルターの直下の階層ページのみ対象としています。
title

Wikiページのタイトルを任意の名前にします。区切り文字で区切られたページ名をこのタイトルにかえることができます。

{{title タイトル名}}
  • catalog_listでフィルター部の非表示(default)を使用している場合は、titleプラグインで指定されたタイトル名が表示されます。

 管理機能

管理メニューに「カタログ設定」を追加しました。

  • 「階層化を行なわない文字列」に指定したキーワードを含む部分は、区切り対象外となります。

 ライセンス

GPLでお願いします。

 サンプル

下記リンク先でサンプルを見ることが出来ます。

 更新履歴

2005/03/04 - catalog_20050304.zip(479)
  • 新規作成
2005/03/10 - catalog_20050310.zip(498)
  • titleプラグインの追加。
  • catalog_listにタイトル名置換え機能の追加。
2005/03/15 - catalog_20050315.zip(497)
  • {{catalog}}表示に区切り文字指定が反映されていなかったバグを修正。
  • {{catalog_list}}のフィルターを使用した場合はaction処理中でも表示できるように修正。
  • リンクがURLエンコードされていなかったバグを修正。
2005/03/17 - catalog_20050317.zip(462)
  • 「階層化を行なわない文字列」を設定できるようにした。
2005/04/08 - catalog_20050408.zip(445)
  • catalog_listで表示される文字列の先頭の区切り文字を表示しないように変更。
  • 区切り文字でいくつかの文字が対応できていなかったのをできるだけ改善。("は無理です...)
2005/04/09 - catalog_20050409.zip(446)
  • 文字の取り扱い方法を変更
  • 区切り文字で対応できていなかった部分に対応。("はちょっと面倒ですが、"\""という風に指定すれば対応できます)
2005/07/13 - catalog_20050713.zip(442)
  • catalog_view プラグインを新規追加
  • その他修正
2005/11/04 - catalog_20051104.zip(431)
  • ページの参照権限をチェックするように修正
2006/01/31 - catalog_20060131.zip(622)
  • includeプラグインで取り込んだページ内にTitle指定がある場合、表示ページ内のTitle指定が置き換わる問題に対応

 コメント

  • ページ階層の管理をやろうと思って作ったプラグインですが、今のところ機能が少ない為、ご要望があれば検討しますので言ってください。 - KG (2005年03月07日 11時51分46秒)
  • 階層化されたページでは、タイトルが適切では無い場合があると思われるので、titleプラグインを追加してタイトルを変更できるようにしてみました。 - KG (2005年03月10日 01時57分47秒)
  • 上記の「タイトルが適切ではない」のことなのか分かりませんが、ページ名によって表示がおかしくなる場合があるようです。 - tuki (2005年03月10日 12時57分41秒)
  • ページ名を FrontPage/99.リンク としたところ、catalog_list プラグインが出力したリンクからジャンプすると表示がおかしくなりました。 - tuki (2005年03月10日 12時58分41秒)
  • こちらでいくつか試してみましたが、現象がつかめません。上記のページ名を「FrontPage/99.リンク」としたというのは、titleプラグインを使用して設定したという事でしょうか?それとも、作成するページの名称を「FrontPage/99.リンク」としたのでしょうか?また、「表示がおかしく・・・」というのはどんな感じになっているのですか? - KG (2005年03月10日 18時42分10秒)
  • 説明不足ですみません。まず、title プラグインは使用しておりません。 - tuki (2005年03月11日 09時18分10秒)
  • 「表示がおかしく・・・」についてはジャンプ先のページにて右上リンク部分(ページ名で検索)の部分が「FrontPage/99.・E鵐・諒埆・/h1> 」となりました。 - tuki (2005年03月11日 09時19分29秒)
  • バージョンも書いていませんでしたね。すみません。3.5.7 です。 - tuki (2005年03月11日 09時20分18秒)
  • どうも、「ラリルレロワ」などの文字がページ名に含まれていると、それ以降の部分がおかしくなっているようです。 - tuki (2005年03月11日 09時21分32秒)
  • ちょっと こちら でテストしてみたのですが、正常に表示されます。それと、上記で言われている「右上のページ名検索のリンク」部だけが文字化けして、ページ内容が正常に表示されるのであれば、catalog_list プラグインの問題というよりは、テンプレートか何かの文字コードの問題のような気がします。 - KG (2005年03月11日 09時58分09秒)
  • 自分でちょこちょこと書き変えている部分があるので、そのとき文字コードが変わってしまったのかもしれません…。ページの一覧からは該当ページにジャンプすることができて catalog_list プラグインからのリンクだと新規ページの作成になってしまうのでプラグイン側に原因があると思ってしまいました。お騒がせしてしまいすみませんでした。自分の環境をもう一度確認して御報告します。 - tuki (2005年03月11日 12時51分35秒)
  • ソースのページを見たところ、catalog_list プラグインの出力ではURLエンコードされていませんでした。なぜURLエンコードされないかまではまだ分からないのでもう少し調べてみます。 - tuki (2005年03月11日 12時55分20秒)
  • ↑ページのソース」 - tuki (2005年03月11日 12時55分49秒)
  • ↑「ページのソース」ですね。失礼しました。 - tuki (2005年03月11日 12時56分15秒)
  • tukiさん、URLエンコードされていなかった件を修正しました。対応、遅くなって申し訳ありませんでした。 - KG (2005年03月15日 16時12分38秒)
  • 既出ならすみません。ページ名を例えばaaa/bbbというページにすると駄目ですね。 - kak (2005年03月16日 15時17分26秒)
  • もう少し、詳しい情報をお願いします。駄目というのはどういう風に駄目なんでしょうか? - KG (2005年03月16日 15時41分16秒)
  • 時間が無く情報が少ない状態で書き込んですみません。 - kak (2005年03月16日 22時22分59秒)
  • たとえば、http://www.momo.dyndns.org/~neko-kak/wiki/wiki.cgi?page=TCP%2FIPにアクセスしてみてください。表示しているページ名はTCP/IPというページです。このページ名をプラグインで表示させると、Page :: TCP / IPと表示され、TCP/IPで1つのページとしてリンクされるのではなくTCPとIPで複数リンクされます。 - kak (2005年03月16日 22時24分59秒)
  • 難しいところですね。一つの解決策としては、区切り文字を指定する事で解決できます。例えば"|"を使用するとか・・・。{{catalog |}}とすればいいのですが、この場合階層化の区切りとして"/"が利用できなくなってしまいます。 - KG (2005年03月17日 01時42分08秒)
  • 階層化表記しないページ名の一覧を登録できるような機能を考えてみます。例えば、管理者用のページから登録できるといいですかね? - KG (2005年03月17日 01時45分09秒)
  • 「階層化を行なわない文字列」の登録機能を追加しました。上記のような「TCP/IP」を管理画面の「カタログ設定」メニューから登録すれば、ページ名に含まれる「TCP/IP」の文字が階層化対象文字列から外れます。 - KG (2005年03月17日 10時35分46秒)
  • 確認しました。 - kak (2005年03月17日 13時09分29秒)
  • 確認しました。問題なく動作してます。対応ありがとうございました。^o^ - kak (2005年03月17日 13時10分02秒)
  • URL エンコードの件、対応ありがとうございました!こちらこそお返事が遅くなってしまい申し訳ありませんでした。 - tuki (2005年03月17日 16時24分21秒)
  • なんで今までなかったんだろうというぐらい便利ですね。KGさんへ感謝を。ただ、贅沢を言わせてもらえば、私の好みではリスト表示で先頭に区切り文字がない方が良いですね。 - mk (2005年04月04日 00時25分57秒)
  • やっぱり、先頭の区切り文字はない方がいいですかね。titleプラグインで置き換えられているのかどうかを判断する意味で付けておいたのですが、実際の運用でそういう区別は必要ないのかもしれませんね。ちょっと、検討してみます。 - KG (2005年04月04日 01時16分28秒)
  • ちなみに、(calendarプラグインとの併用で)区切り文字が "-" とかだと、先頭の"-"って実際のところかっこ悪いんですよね(笑) - KG (2005年04月04日 01時24分40秒)
  • {{catalog [区切り文字]}}で区切り文字に向き不向きがあるようです。".$など。ドットは使いたかったです。 - 朝ゆめ (2005年04月08日 12時43分21秒)
  • いくつか対応してみました。mkさん、先頭の区切り文字を消しました。朝ゆめさん、"への対応は難しいですが、それ以外の区切り文字に対応しました。かなりキワドイ修正をしてますので、動作が心配ですが・・・。 - KG (2005年04月08日 20時15分54秒)
  • "の指定にも"\""という指定方法で対応しました。 - KG (2005年04月09日 00時21分46秒)
  • 内部の文字の取り扱い方法を変更し、安全に利用できるようにしました。(というか今までのが安全ではなかったのですが・・・) - KG (2005年04月09日 00時23分36秒)
  • おお!カテゴリ一覧で区切り文字が表示されないのですっきり見えます。個人的には先頭にスラッシュがあると絶対パスを連想してしまうんですよね。ありがとうございます、KGさん。 - mk (2005年04月09日 11時15分25秒)
  • ようやく説明通りの表示にたどり着いて、このプラグインの機能がよく理解できました。感激のあまりちょいとばかり上記本文をいじりました。 - MINTY (2005年04月09日 20時34分44秒)
  • 階層化ページを扱うというので、大分前に似たようなコンセプトでプラグインを作成したもののまとめきれないまま放置したものがあります。てゆーか PukiWiki の ls プラグインをパクろうとして失敗したというか...このプラグインを補える機能があるかもしれないので、お暇な時にでも見てもらえれば幸いです。 - gyo (2005年04月11日 12時49分57秒)
  • catalog_list において、「カタログ情報」という出力文字のかわりに引数で指定できないものでしょうか。 - MINTY (2005年04月18日 21時00分45秒)
  • catalog_list の出力フォーマットは catalog_list.tmpl で設定しているので、こちらを修正すればデフォルトの「カタログ情報」という文字列を変更することができます。また、catalog_listを使用しているページで任意のタイトル文字列を指定したいのでしたら、catalog_list.tmpl から <h2>カタログ情報</h2>の記述部分を削除し、catalog_list を使用する前行にパラグラフを指定すればよいかと思います。 - KG (2005年04月18日 22時34分40秒)
  • 了解です。お返事ありがとうございます。 - MINTY (2005年04月19日 05時53分57秒)
  • catalog_view プラグインを追加しました。 - KG (2005年07月13日 20時08分58秒)
  • ページの参照権限をチェックしていなかったので、チェックするように修正しました。 - KG (2005年11月04日 23時02分45秒)
  • Titleプラグインのみ更新しました。includeプラグインとの併用でTitleが上書きされる問題に対応しました。 - KG (2006年01月31日 02時53分54秒)
  • 何処に書いていいのかわからないけど、ページリンク階層表示プラグインとの相性悪いかも<titleプラグイン - 名無しさん (2006年02月10日 01時48分04秒)
  • layerviewプラグインでは、ページ名をタイトルから取得しているようですね・・・これに以下のような修正を加えたらどうですか? - KG (2006年02月10日 09時51分16秒)
[Layerview.pm]146行目(rev1)
-  my $page_name = $wiki->get_title();
+  my $page_name = $wiki->get_CGI->param('page');
  • 確認ありがとうございます。>KG殿 そうですね。get_title()でとっていたかもしれません。その対応で良いと思います。修正版の公開に関してですが、ずっと以前からそれの改良版を作成中のまま放ったらかしの状態でして…。できれば、上記だけでしたら手作業で対応して頂けたら、と思います。申し訳ございません。 - あき (2006年02月10日 11時57分46秒)
  • 素早い対応どうもありがとうございました。 - 名無しさん (2006年02月10日 23時11分41秒)
  • とても便利なプラグインありがとうございます。このページのcatalog_viewの説明箇所では、catalog_listでの説明になっているのは間違いですよね?後、機能要望なのですが、catalog_listでリスト表示されている順番はデフォルトでa-zあ-ん順だと思うのですが、これをtodoの優先度みたいな形ででも良いので、何とか任意の順番で表示させるようには出来ませんでしょうか。 - たった (2007年08月30日 00時26分49秒)
  • catalog_view の説明箇所を修正しました。並び替え順序に関しては現在は「ページ名の文字コード順」ということになっていたと思います。ページに何らかの属性みたいなものを付加してそれを並び替え順に適用するというようにすれば良いでしょうけど・・・まだまだ先の話になります。将来的には「ページ属性プラグイン」というのをリリースする予定ですので、それとの連携など考えてみます。 - KG (2007年08月30日 15時11分55秒)
  • 検討頂き有難う御座います。ページ属性プラグインのリリース楽しみにしています。また連携の案なども大変かとは思いますが是非期待したい所です。 - たった (2007年08月30日 17時06分24秒)
  • catalog_listで「上から」もしくは「下から」 n番目以内を表示させることは可能でしょうか? - れおまる (2007年10月22日 19時22分54秒)
  • 現在は対応していません。ページコントロールをしたいということでしょうか? - KG (2007年10月22日 20時12分00秒)
  • Menuに最新情報としてカタログの出力で表示させたいと思いました。Menuなのであまり長くなるのを避けたいのです。 - れおまる (2007年10月22日 20時49分25秒)
  • 最新情報となると、並び替え順も更新日(降順)という具合にしたいんですね。recentプラグインにページフィルターを追加した改造の方が手っ取り早いですね。 - KG (2007年10月22日 21時13分30秒)
  • 階層などを考慮すると recent プラグインでは面倒か・・・。カタログプラグインでも階下の更新日までは見てないですからねぇ。 - KG (2007年10月22日 21時17分22秒)
  • titleプラグインも使わせていただいてるので、catalog_listで実現出来たらいいなぁと思いました。 - れおまる (2007年10月22日 21時26分50秒)
  • ざっと処理を見直してみましたが、ページ情報を別途扱っていないので現在のままでは対応は困難です。(と、一応言っておきます。将来的な改善点として記憶しておきます。) - KG (2007年10月22日 22時12分40秒)
  • 最新バージョンの3.6.3.1を設置(3.6.2からのバージョンUP)してみたのですが、「catalog_listプラグインは存在しません。」とエラーが出てしまうようです。こちらのプラグインは最新バージョンには対応されてませんでしょうか?3、4回位やり直してみたのですがエラーになるようで自力での解決は難しいのでご教授願えませんでしょうか? - たった (2010年01月11日 01時25分09秒)
  • 「catalog_listプラグインは存在しません。」というメッセージが出たページの HTML ソースをブラウザの機能(firefox ならメニューバーから「表示」→「ページのソース」)を用いて直接見てみて下さい。そのとき、「catalog_listプラグインは存在しません。」という文字列の直前の HTML タグは、次のどちらになっていますか? - 菜梨 (2010年01月11日 10時22分05秒)
    • <font class="error">
    • <span class="error">
  • 2箇所呼び出してるんですが、2箇所とも<span class="error">です。宜しくお願いします。 - たった (2010年01月11日 10時49分16秒)
  • 直前の HTML タグが <span class="error"> であるとき、このエラーの意味するところは、「エラーの出たプラグイン(ここでは catalog_list プラグイン)を、Wiki ソースパーザはインラインプラグインと認識したが、そのようなインラインプラグインは登録されていない」となります。catalog_list プラグインはパラグラフプラグインですから、Wiki ソースの記述に問題があってインラインプラグインと認識されているのではないでしょうか? パラグラフプラグインとして認識されるためには、Wiki ソースの記述において次の 2 つの条件を満たす必要があります。 - 菜梨 (2010年01月11日 11時09分24秒)
    • プラグイン開始記号「{{」が行頭から始まっていること。
    • プラグイン終了記号「}}」の直後が行末であること。(「}}」と改行文字の間に空白文字を含む任意の文字があってはダメです。)
  • 素直に再セットアップして、catalog_listプラグインを導入したら動くのを確認しました。今回3.6.3.1にバージョンUPかつutf8に変更しようとしていたのが原因だったようです。お騒がせ致しました。 - たった (2010年01月12日 17時21分28秒)
お名前: コメント: