infobox.inc.php

サマリ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;
}
?>

導入の準備

  1. dev:PukiWiki/1.4/ちょっと便利に/複数行のプラグイン引数を可能にを準備します
  2. cssに
    .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


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-21 (火) 23:42:13
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 3.422 sec.

SourceForge