#author("2024-10-15T15:19:59+09:00","default:kanateko","kanateko")
#author("2025-02-27T16:44:29+09:00;2024-10-15T15:19:59+09:00","default:kanateko","kanateko")
&tag(プラグイン,自作,追加,未公開);

//#ref(plist.jpg,nolink,center,wrap,500x)

#contentsx
*指定したページの一覧をテンプレートに沿って作成するプラグイン [#overview]
#infobox(plugin,except=ライセンス){{
name=plist
ver=1.1.1
pukiwiki=1.5.4
update=2024-10-15
}}

タグもしくは親ページを指定し、対象のページ一覧をテンプレートに沿った形で作成するプラグイン。
タグ、正規表現、もしくは親ページを指定し、対象のページ一覧をテンプレートに沿った形で作成するプラグイン。汎用のtracker_listプラグインのようなもの。

一覧の表示形式はテーブルかフレックスボックスかで選択できる。また、テンプレートはプラグインの引数として直接設定できるほか、あらかじめ用意した別ページにあるテンプレートを読み込むいこともできる。

テンプレートを作成する際、各ページのインフォボックスやセクション、テーブルのセルや画像を抽出することができる。

#clear

#box(label,style=full,title=このプラグインでできること){{
-指定したページの一覧を作成する。
--タグでの指定 (taglistと同様) か親ページの指定が可能。
--タグでの指定 (taglistと同様) や正規表現、親ページの指定が可能。
--表示形式はテーブルもしくはフレックスボックス。
-各ページの内容を抽出して一覧に表示可能。
--インフォボックス、セクション、テーブルセル、画像を抽出できる。
-キャッシュに対応しているため、2回目以降の表示を高速化できる。
}}

*ダウンロード[#download]
//最新: [[GitHub>https://github.com/kanateko/pukiwiki-plugin]]

#box(caution,width=400px){{{
このプラグインは現在公開されていません。
}}}

|~日付|~バージョン|~備考|h
|2024-10-15|1.1.1|#ul(styleにplainを追加,plain用のオプションとしてseparatorを追加)|
|2024-09-21|1.1.0|#ul(キャッシュ方法を改善し表示を高速化)|
|~|1.0.8|#ul(一覧作成時に存在しないページを除外するよう修正)|
|2024-09-08|1.0.7|#ul(HTMLタグがそのまま表示されることがある問題を修正)|
|2024-08-29|1.0.6|#ul(regexp使用時にコメントページをデフォルトで除外)|
|2024-08-28|1.0.5|#ul(flex用のsearchオプションを追加)|
|2024-08-27|1.0.4|#ul(ソート方法を最適化)|
|2024-08-12|1.0.3|#ul(ソートのバグ修正,テンプレート読み込み時に不要な行が入る問題を修正)|
|2024-08-08|1.0.2|#ul(ページを正規表現で指定する機能を追加)|
|2024-07-26|1.0.1|#ul(n番目の画像を抽出する機能を追加)|
|2024-07-25|1.0.0|#ul(初版作成)|

//*セットアップ [#setup]

*プラグイン設定 [#settings]
#style(word-break:break-all;,class=table_compact){{{
#tableif(^(int|\d+)$=COLOR(#62bf4b),^(string|'.+')$|DIR \.=COLOR(#cb643d),^'/.+/'$=COLOR(#df0606),^(bool|true|false)$=COLOR(#463dcb)){{
|~定数|~型|~初期値|~説明|h
|BOLD:BGCOLOR(--table-header-td-color):160|CENTER:80|120|400|c
|DEFAULT_STYLE|string|'table'|デフォルトの一覧表示形式|
|DEFAULT_SEPARATOR|string|'\n'|デフォルトのセパレータ (plain用)|
|TEMPLATE_PATH|string|':config/plugin/plist/'|テンプレート設定の親ページ|
|REGEXP_EXCEPTION|string|'/^(Comments|コメント)\//'|正規表現でページ指定時の除外設定|
|PLIST_CACHE_DIR|string|CACHE_DIR . 'plist/'|キャッシュを保存するディレクトリ|
}}
}}}


*使用方法 [#usage]
 #plist(<タグ指定or親ページ指定>[,オプション]){{{{
 [テンプレート]
 }}}}

テンプレートを直接設定する場合はマルチライン部分を使用する。なお、テンプレート内で三重の波括弧を使用するため、マルチライン部分の波括弧は四重以上にする必要がある。

*オプション [#options]
:style = |一覧の表示形式。table、flex、plainから選択可能。デフォルトはtable。
:tag = |一覧表示するページをタグで指定する。'|'で区切って複数指定も可能。指定方法はtaglistプラグイン等と同じ。例:tag = プラグイン^自作|プラグイン^追加
:root = |一覧表示するページの親ページを指定する。'|'で区切って複数指定も可能。例:root = 自作プラグイン
:regexp = |一覧表示するページを正規表現で指定する。例:regexp = ^:config/
:except = |一覧表示から除外するページを指定する。正規表現を使用。例:except = ^コメント/
:separator=|plain専用。各要素の区切り。デフォルトは\n (改行)。
:item-width = |flex専用。各アイテムの幅を指定する。指定方法はflexプラグインと同じ。例:item-width = 200
:justify-content = |flex専用。各アイテムの整列方法を指定する。指定方法はflexプラグインと同じ。例:justify-content = center
:search|flex専用、各要素内のページ名を検索できる検索バーを設置する。
:class = |追加のクラスを指定する。
:template = |読み込むテンプレートを指定する。例えばtemplate = hogeと指定した場合、:config/plugin/plist/hogeの内容がテンプレートとして読み込まれる。テンプレートは使用方法で示したようにマルチライン部分で直接設定することもできる。

**テンプレートの設定方法 [#template]
テンプレートの設定方法はinfoboxプラグインやinctmpプラグインに近い。三重の波括弧でキーを囲い、その部分が表示時に各ページの指定した内容に置き換えられる。

キーは抽出したい内容によってinfobox、section、cell、imageなどが使用でき、キーの後ろに「:」で区切ってオプションを記述できる。また、その他にも「_page」「_pagelink」「_base」「_baselink」といったキーを指定し、ページ名やベースネーム、それらのリンクに置き換えることもできる。

table形式の場合はヘッダーや列の設定を含め、テンプレートとなる行を書く。flex形式の場合は各アイテムのテンプレートを書く。

例:table形式の場合

 |~プラグイン名|~バージョン|h
 |CENTER:|CENTER:|c
 |{{{_pagelink}}}|{{{infobox:ver}}}|
 
例:flex形式の場合
 {{{image:1,nolink,200x}}}
 {{{_pagelink}}} 

***インフォボックス [#j281a79d]
各ページのインフォボックスの内容を抽出する。記述方法は`{{{infobox:<オプション>}}}`。オプション部分は[[inc_infoboxプラグイン>../inc_infobox]]のオプション指定と同じ。

例:{{{infobox:ver,replace=v%s}}}

***セクション [#cfb05fe3]
各ページの内容を見出し単位で抽出する。記述方法は`{{{section:<オプション>}}}`。オプション部分は[[inc_sectionプラグイン>../inc_section]]のオプション指定と同じ。

例:{{{section:ダウンロード,num=2:5}}}

***テーブルセル [#vd568c0a]
各ページにある表の内容をセル単位で抽出する。記述方法は`{{{cell:<オプション>}}}`。オプション部分は[[getcellプラグイン>../getcell]]のオプション指定と同じ。

例:{{{cell:filter=1.0.0,col=3}}}

***画像 [#d58c717d]
各ページにあるn番目の画像を抽出する。記述方法は`{{{image:<番号>,<オプション>}}}`。オプション部分はrefプラグインのオプション指定と同じ。

例:{{{image:1,nolink,200x}}}



*使用例 [#ecample]
#tab{{{{{
#:表示
#plist(root=自作プラグイン){{{{
|~プラグイン名|~バージョン|~サムネイル|h
|BOLD:|||c
|{{{_baselink}}}|{{{infobox:ver,replace=v%s}}}|{{{image:1,nolink,100x}}}|
}}}}
#:ソース
 #plist(root=自作プラグイン){{{{
 |~プラグイン名|~バージョン|~サムネイル|h
 |BOLD:|||c
 |{{{_baselink}}}|{{{infobox:ver,replace=v%s}}}|{{{image,1,nolink,100x}}}|
 }}}}
}}}}}

*追加したい機能 [#roadmap]


*備考 [#notes]
-1度表示した内容はページごとにキャッシュされるので、2回目以降の表示は高速化する。キャッシュはプレビューで表示するか、Wiki内のいずれかのページが更新される (recentが更新される) と新たに作成される。

*コメント [#comment]
#pcomment(reply)