#author("2023-07-19T17:04:26+09:00","default:kanateko","kanateko")
#author("2023-09-25T20:35:00+09:00","default:kanateko","kanateko")
&tag(プラグイン,自作,追加);

#ref(inctmp.jpg,center,wrap,500x)

#contentsx

*取得したテンプレートの一部を置き換えて表示するプラグイン [#summary]
#infobox(plugin){{
name=inctmp
ver=1.0.0
ver=1.0.1
pukiwiki=1.5.4
update=2023-07-19
update=2023-09-25
}}

[[infoboxプラグイン>../infobox]]を汎用化したもの。指定したテンプレートページ内の任意のキーワードを置き換えた上で現在のページに表示することができる。プラグイン名は''inc''lude ''t''e''mp''lateの略。

元々PukiWiki公式サイトにて似たようなプラグインが公開されていたようだが、既に配布ページが消失していたため、[[infoboxプラグイン>../infobox]]同様自作することにした。

includeやincludexなどとの主な違いは以下の通り。

-指定したキーワードを任意の文字に変更可能。
-1ページ内で同一のテンプレートを複数回用いることができる。
--ループ対策済

上記の違いにより、より柔軟なページ編集が可能になっている。

#clear

#box(label,label-style=full,box-color=blue,title=このプラグインでできること){{
-指定したページの内容を取得して表示する。
--ページ内で指定されたキーワードを任意の内容に変更して表示できる。
--テンプレートの==noinclude==~==/noinclude==間は表示先のページに反映されない。
-オプションで追加のクラス指定が可能。
}}


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

|~日付|~バージョン|~備考|h
|CENTER:120|CENTER:60|590|c
|2023-09-25|1.0.1|#ul(出力時の余分な改行を削除)|
|2023-07-19|1.0.0|#ul(初版作成)|

*セットアップ [#setup]
+GitHubからダウンロードした「inctmp.inc.php」をPukiWikiのpluginディレクトリに放り込む。

*プラグイン設定 [#setting]
#style(word-break:break-all;,class=table_compact){{{
#tableif(^(int|\d+)$=COLOR(#62bf4b),^string|'$|DIR \.=COLOR(#cb643d),^(bool|true|false)$=COLOR(#463dcb)){{
|~定数 (PLUGIN_INCTMP_~)|~型|~初期値|~説明|h
|BOLD:BGCOLOR(--table-header-td-color):180|CENTER:80|220||c
|PAGE|string|':config/plugin/inctmp'|テンプレートページのルート|
|SAFEMODE|bool|false|テンプレートの編集制限チェックの有無|
|KEY_FORMAT|string|'{{{%s}}}'|テンプレート上のキーのフォーマット。%s部分が任意のキーになる|
}}
}}}

*使用方法 [#usage]
 #inctmp(< テンプレート名 > [, オプション]){{
 < キー > = < 値 >
 < キー > = < 値 >
 ︙ 
 }}

**オプション [#option]
:テンプレート名|
必ず第一引数で指定する。
設定のルートページ以下が対象になるため、例えば`hoge`を指定したら、実際のページは`:config/plugin/inctmp/hoge`になる。
:class = < クラス名 >|
表示したテンプレートを囲うdiv要素にクラスを追加する。
複数クラスを追加する場合は半角スペースをはさむ。
:<キー> = < 値 >|
テンプレート上の指定したキーを全て指定した値に置き換える。
最終的な表示で未指定のキーが残っている場合、そのキーを含む行がテンプレートから削除された状態で表示される。

*使用例 [#example]
テンプレート:[[:config/plugin/inctmp/example]]
#tab{{{
#:表示
#inctmp(example){{
title = 使用例
color = red
text = テンプレートのページと見比べると、どのように動作しているかがわかりやすいと思います。
}}
#inctmp(example,class=align-center){{
title = 使用例2
color = blue
text = このように同じテンプレートを使用して別の表示も可能です。&br;ループ対策済み。
}}
#:ソース
 #inctmp(example){{
 title = 使用例
 color = red
 text = テンプレートのページと見比べると、どのように動作しているかがわかりやすいと思います。
 }}
 #inctmp(example,class=align-center){{
 title = 使用例2
 color = blue
 text = このように同じテンプレートを使用して別の表示も可能です。&br;ループ対策済み。
 }}
}}}

*備考 [#note]
-動作にはPHP8以上が必要になる。

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