OneThird CMS

Lightweight CMS for Small website, Web application framework.

Download Document

english

驚くほど簡単に設定ページ/管理画面(コンパネ)を作るには?

Web制作ではあまりないかもしれませんが、Webアプリでは必ず何らかの設定が画面が必要になります

いわゆる管理画面、コンパネ周りの設計です


つまり、システムに必要な文字列や数字、例えばパスワードとか、初期値とか、をシステムに記憶させる設定画面です

OneThird CMSでは、そういった場合 snippet_std_setting を使うと比較的簡単に設定画面を作れるのですが

実はもっと簡単に作る方法があります

それはembedプラグインを使う方法です


この方法だと、プログラムを組まなくても作成することができます

例えば、仮にmax_sizeという値を記憶したい場合は

設定用のページ(普通のページでOK)を作成しページ編集で、

{$plugin("embed","number","name:max_size","page:top")}   

と書けばOKです

驚くほど簡単です


データは、'page:top'と書いてあるため、トップページのメタデータとして記録されます

実際に書き込まれたか確認する場合はメタデータマネージャを使って確認してください


そして記録されたデータをプログラムで呼び出す場合は

以下の2行で読み出せます

$meta = get_theme_metadata();
$max_size = (int)$meta['plugin_embed']['max_size'];
   


以上はもっとも簡単な設定画面ですが、場合によっては初期値や最大値、最小値等細かい操作をしたい場合があります

その場合は、多少難しくなりますが、テンプレートモジュールを作成し、以下の様にプログラムで書けばOKです

ポイントは、$pluginを使うのではなく、$plugin_procを使うことです

$buff = <<<EOT
	{$plugin_proc('embed','start-edit')}
	<p>{$plugin_proc('embed','number','name:max_size','page:top')}</p>
	<p>{$plugin_proc('embed','save')}</p>
EOT;
	$html['article'][] = $buff;
   

その上で、データ修正時のイベント(onbefore_modified)をフックしてください

サンプルは、最小値を設定したものです

$plugin_ar[ EMBED_ID ]['onbefore_modified'] = 'my_embed_onbefore_modified';

$buff = <<<EOT
	{$plugin_proc('embed','start-edit')}
	<p>{$plugin_proc('embed','number','name:max_size','page:top')}</p>
	<p>{$plugin_proc('embed','save')}</p>
EOT;
	$html['article'][] = $buff;

function my_embed_onbefore_modified(&$r)
{
	global $params,$database;
	//$rにはページデータが収納
	if ($r['meta']['plugin_embed']['max_size'] < 10) {
		$r['meta']['plugin_embed']['max_size'] = 10;
	}
}
   

※ フックの設定は、plugin_procを呼び出す前に設定してください


このようにOneThird CMSでは、テンプレートタグをテンプレートに使う以外にも

ページ編集やプログラム中でほぼ同じ形でかけるので、うまく利用すると省力化することができます

例:文字列をエンティティ化する

$a = "{$ut->safe_echo($str)}";
   

是非うまく活用してください