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)}";
是非うまく活用してください