#author("2024-12-14T05:20:31+09:00;2024-09-13T23:39:32+09:00","default:kanateko","kanateko")
#author("2024-12-14T05:20:41+09:00;2024-09-13T23:39:32+09:00","default:kanateko","kanateko")
&tag(プラグイン,自作,追加);

#contentsx

*テンプレートからインフォボックスを作成するプラグイン [#u254139d]
#infobox(plugin){{
name=infobox
pukiwiki=1.5.4
ver=1.1.0
update=2024-09-13
}}

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

インフォボックスに限らず汎用的に使いたい場合は、[[inctmpプラグイン>..\inctmp]]を使用する。
インフォボックスに限らず汎用的に使いたい場合は、[[inctmpプラグイン>../inctmp]]を使用する。

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

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

|~日付|~バージョン|~備考|h
|CENTER:120|CENTER:100|550|c
|2024-09-13|1.1.0|#ul(他プラグインとの互換性を改善)|
|~|1.0.1|#ul(複数行の値でのコメントアウトに対応)|
|2024-09-01|1.0.0|#ul(コードを整理,デフォルト値を設定する機能を追加,値を複数行にわたって書く機能を追加,値が空白のキーは非表示扱いに変更)|
|2023-07-25|0.6.0|#ul(イコール前後の空白に対応)|
|2022-03-19|0.5.0|#ul(同ページ内に同じテンプレートを使用したインフォボックスを複数設置できるよう改善)|
|2021-08-04|0.4.0|#ul(正規表現で指定した文字列を含む行を非表示にする機能を追加)|
|~|0.3.0|#ul(プラグインを使用するにあたってテンプレートページを凍結する必要があるかどうか設定する機能を追加)|
|~|0.2.0|#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]
:TEMPLATE_PATH|デフォルトのテンプレートページ。各テンプレートの親階層にあたる。初期設定は「:config/plugin/infobox/」
:ENABLE_SAFE_MODE|使用するにあたってテンプレートページを凍結する必要があるかどうか。初期設定はfalse

その他は基本的に変更しないように。

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

テンプレート名を指定すると「<デフォルトのテンプレートページ>/<テンプレート名>」が呼び出される。

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

キーと値の指定でイコールの後に改行をした場合、その下で複数行にわたって値を書ける。別のキーの指定があった時点で値は終了する。

 例:
 #infobox(...){{
 key1 = 
 複数行にわたって
 「key1」の値を
 指定できる
 key2 = val2
 ︙
 }}

***オプション [#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{:本家の自作プラグインとして公開されていたが消滅している};として分離するかもしれない。

追記:[[inctmp>../inctmp]]プラグインを作成した。

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