#author("2022-05-29T18:57:19+09:00;2021-08-04T13:13:41+09:00","default:kanateko","kanateko")
#author("2022-07-06T04:29:04+09:00;2021-08-04T13:13:41+09:00","default:kanateko","kanateko")
&tag(プラグイン,自作,追加);

#contentsx

*テンプレートからインフォボックスを作成するプラグイン [#u254139d]
#infobox(plugin){{
name=infobox
pukiwiki=1.5.3
ver=0.4
update=2021-08-04
}}

指定したテンプレートページを読み込み、{{{キー}}}を指定した値に置き換えて表示するプラグイン。当Wikiでは元々styleプラグインでinfoboxクラスを指定してインフォボックス (風のテーブル) を作成していたが、それをプラグインとして独立させたものになる。また、このプラグインを使ってインフォボックスを作成すれば、修正が必要な場合にテンプレートを変更するだけで良くなるので、メンテナンス性が向上する。

:このプラグインでできること|
--テンプレートを読み込んで表示する
---事前に設定しておいたキーを指定した値に置き換えて表示できる
--==noinclude== ~ ==/noinclude== で囲った部分はページに表示しない
--使用していないキーがある行は自動的に非表示になる
--正規表現で指定した文字列を含む行を非表示にできる
--テンプレートの読み込みでループが発生する場合は回避する
--オプションで任意のクラスを追加可能
--使用にあたってテンプレートを凍結する必要があるかを設定可能

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

|~日付|~バージョン|~備考|h
|2021-08-04|0.4|#ul(正規表現で指定した文字列を含む行を非表示にする機能を追加)|
|~|0.3|#ul(プラグインを使用するにあたってテンプレートページを凍結する必要があるかどうか設定する機能を追加)|
|~|0.2|#ul(ループが発生する場合は処理を中断してエラーを表示する機能を追加)|
|2021-08-03|0.1|#ul(初版作成)|

*セットアップ [#w0c581bc]
+ダウンロードした「infobox.inc.php」をpluginフォルダに入れる。
+(任意) skinフォルダの「pukiwiki.css」に以下の内容を追加する。
--スマホ表示向けメディアクエリの外に以下を追加
#prism(css){{
.infobox {
    float: right;
}
}}
--スマホ表示向けメディアクエリの中に以下を追加
#prism(css){{
.infobox {
    float: none;
}
.infobox .style_table {
    width: 100%;
}
.infobox:not(.nozoom) img {
    width: 100%;
}
}}

*プラグインの設定 [#y0def2d1]
:INFOBOX_TEMPLATE_LOCATION|デフォルトのテンプレートページ。各テンプレートの親階層にもあたる。初期設定は「:config/plugin/infobox」
:INFOBOX_NEED_TO_FREEZE|使用するにあたってテンプレートページを凍結する必要があるかどうか。初期設定はfalse

*使用方法 [#x782d41f]
**インフォボックスの作成 [#h87c6691]
 #infobox([テンプレート名][,nozoom][,class=xxx][,except=xxx]){{
 <キー1>=<値>
 <キー2>=<値>
 ︙
 }}

テンプレート名を省いた場合はデフォルトのテンプレートページが読み込まれる。テンプレート名を指定した場合は「<デフォルトのテンプレートページ>/<テンプレート名>」が呼び出される。

例えば、このページのインフォボックスではテンプレート名に「plugin」を指定している。この場合は「:config/plugin/infobox/plugin」がテンプレートとして呼び出されている。

***オプション [#zd33297c]
:nozoom|スマホ表示時に画像を最大化しないようにする &note{:class=nozoomと同等。なぜこのオプションを用意したかは備考欄を参照};
:class=xxx|インフォボックスに任意のクラスを追加する
:except=xxx|正規表現で指定した文字列を含む行を非表示にする

**テンプレートの作成 [#x818a453]
[[:config/plugin/infobox/plugin]]を参照。
置き換える部分は「{{{キー}}}」このように書く。「==noinclude== ~ ==/noinclude==」で囲まれた部分はインフォボックス作成時には出力されない。

*使用例 [#pd23c0fc]
使用例として、このページのインフォボックス部分のソースを表示しておく。

ページ側
 #infobox(plugin){{
 name=infobox.inc.php
 pukiwiki=1.5.3
 ver=0.2
 update=2021-08-04
 }}

テンプレート側
 |>|~{{{name}}}|h
 |RIGHT:100|180|c
 |>|CLASS(infobox-image):CENTER:&ref({{{image}}},,300x0);|
 |~製作者|kanateko|
 |~ライセンス|GPLv3|
 |~バージョン|{{{ver}}}|
 |~動作確認|PukiWiki {{{pukiwiki}}} ~|
 |~最終更新|{{{update}}}|
※CLASS(): の書式は独自に追加しているもの

*追加したい機能 [#p5860edc]
-%%テンプレートページを凍結していないと使えなくする設定%% v0.3で追加
-%%正規表現で指定した文字列を含む行を除外する機能%% v0.4で追加
*備考 [#pce650c6]
**nozoomオプションについて [#n226ce5c]
元々このプラグインは公開する予定がなかった (デザインに依存する部分がある) ため、完全に当Wikiで使うための設定でしかない。動作としては「class=nozoom」を指定した場合と同じなのだが、恐らく使うことが多くなるだろうと思われたため短く書けるようにした。公開用のを別に作ってもよかったのだが、バージョン管理が面倒くさくなりそうなのでやめた。

**テンプレートについて [#hb29e711]
「インフォボックス作成用プラグイン」と銘打っているものの、実際のところはインフォボックスの作成以外にも使える。要は一部を置き換え可能なincludeプラグインなので、infoboxクラスで囲う処理を取り除けば汎用的に使うことができる。そのうちinclude_templateプラグイン&note{:本家の自作プラグインとして公開されていたが消滅している};として分離するかもしれない。

*コメント [#d0888ec3]
#pcomment(,10,above,reply)
#pcomment(reply)