自作プラグイン/infobox

2021-08-04 (水) 13:13:41

カテゴリ:プラグイン 自作 追加

テンプレートからインフォボックスを作成するプラグイン

infobox.inc.php
製作者kanateko
ライセンスGPLv3
バージョン0.4
動作確認PukiWiki 1.5.3 - 1.5.4
最終更新2021-08-04

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

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

ダウンロード

最新: GitHub

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

セットアップ

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

プラグインの設定

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

使用方法

インフォボックスの作成

#infobox([テンプレート名][,nozoom][,class=xxx][,except=xxx]){{
<キー1>=<値>
<キー2>=<値>
︙
}}

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

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

オプション

nozoom
スマホ表示時に画像を最大化しないようにする *1
class=xxx
インフォボックスに任意のクラスを追加する
except=xxx
正規表現で指定した文字列を含む行を非表示にする

テンプレートの作成

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

使用例

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

ページ側

#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(): の書式は独自に追加しているもの

追加したい機能

  • テンプレートページを凍結していないと使えなくする設定 v0.3で追加
  • 正規表現で指定した文字列を含む行を除外する機能 v0.4で追加

備考

nozoomオプションについて

元々このプラグインは公開する予定がなかった (デザインに依存する部分がある) ため、完全に当Wikiで使うための設定でしかない。動作としては「class=nozoom」を指定した場合と同じなのだが、恐らく使うことが多くなるだろうと思われたため短く書けるようにした。公開用のを別に作ってもよかったのだが、バージョン管理が面倒くさくなりそうなのでやめた。

テンプレートについて

「インフォボックス作成用プラグイン」と銘打っているものの、実際のところはインフォボックスの作成以外にも使える。要は一部を置き換え可能なincludeプラグインなので、infoboxクラスで囲う処理を取り除けば汎用的に使うことができる。そのうちinclude_templateプラグイン*2として分離するかもしれない。

コメント

最新の10件を表示しています。 コメントページを参照

  • Infoboxがタイトル(「*概要」など)の上に表示されてしまうのですが対処法はないのでしょうか?
    文字などはInfoboxに合わせて改行されるので大丈夫ですがデザイン的になんとも言えない感じでして… -- 2022-09-16 (金) 22:06:59
    • コメントありがとうございます。CSSでh2〜h4にoverflow: hiddenを追加してみてください。 -- kanateko 2022-09-16 (金) 22:50:50
      • うまくできました。ありがとうございます。 -- 2022-09-17 (土) 03:30:51
  • 記入してない項目があっても空欄として表示されますが、Wikipedia(MediaWiki)のinnfoboxのように記入されていない項目は表示されないようにできませんか? -- 2022-11-15 (火) 15:05:04
    • コメントありがとうございます。空欄が表示されているということは「hoge=」で右辺を空白のまま置いているのだと思いますが、この「hoge=」自体を書かなければ非表示になります。また、キーが不一致の場合も非表示になるので、コメントアウトの要領で「//hoge=」と書いておくことでも表示されなくなります。 -- kanateko 2022-11-16 (水) 11:08:14
      • なるほど。ありがとうございます! -- 2022-11-22 (火) 07:13:10