サマリ | wikipediaの右上の書式風の整形ボックスを出力 |
---|---|
リビジョン | 0.00 |
対応バージョン | 1.4.7 |
投稿者 | asato |
投稿日 | 2013-07-07 (日) 05:44:34 |
質問箱5/138の解答の一例として作成
<?php ///////////////////////////////////////////////// // License: The same as PukiWiki // PukiWiki - Yet another WikiWikiWeb clone. // $Id: infobox.inc.php,v 0.00 2013/07/06 00:00:00 Kazuna Asato Exp $ // define('PLUGIN_INFOBOX_FORMAT',':config/plugin/infobox/format'); function plugin_infobox_convert() { global $script,$vars; $r=''; $CRLF=array("\r","\n"); $args = func_get_args(); $prm_tbl=array_pop($args); $flg=FALSE; foreach($CRLF as $cr){ if (strpos($prm_tbl,$cr)!==FALSE){$flg=TRUE; break;} } if ($flg===FALSE){ return convert_html('infobox:parameter-error');} $fmt_page=(count($args)>0)?$args[0]:PLUGIN_INFOBOX_FORMAT; if (!is_page($fmt_page,TRUE)){ return convert_html('infobox:no-such-page:[['.$fmt_page.']]'); } $fmt=get_source($fmt_page,TRUE,FALSE); $prm=preg_split("/[\r\n]/",$prm_tbl); foreach($prm as $v){ if (strlen($v)<1){continue;} $vv=explode("=",$v); $vvkey='['.$vv[0].']'; $vvval=$vv[1]; $fmt=str_replace ( $vvkey , $vvval , $fmt ); } $r='<div class="infobox">'.convert_html($fmt).'</div>'; return $r; } ?>
.infobox{ border:2px solid; float:right; clear:right; }を追加します。
:config/plugin/infobox/format に通常のページと同様に記述します。 内容を可変にしたい部分には[hoge]のように1重の[]で囲って命名します。
|>|[name]| |地方|[chihou]| |面積|[menseki]| |総人口|[jinkou]|
整形ボックスを出力したい部分に
#infobox(){{ name=東京都 chihou=関東 menseki=2,188.67[[km²>平方キロメートル]]&br;(境界未定部分あり) jinkou=13,269,061人&br;([[推計人口]]、2013年5月1日) }}
のようにこのプラグインを記述します。 書式ページの[name]の部分を東京都に[chihou]の部分を関東に...(以下略) それぞれ置換して出力します。 cssで回り込みを制御しているので お好みでcssを改変してください
自作プラグイン/include_template.inc.php 向こうのほうが高機能で安全性も高いです。 探さずに作ってしまったばっかりに無駄な重複になってしまいました -- 2013-07-15 (月) 09:34:40