
プラグインの詳細設定画面で設定項目を追加するで設けた項目を介してデータの保存と取り出しを行ってみます。
プラグインの設定内容を保存する方法は、プラグインのクラスのプロパティ値を利用して、
/ドキュメントルート/サイトID/.plugin/
以下に.configファイルとして保存するか、DataSetsを利用する方法の2つがあります。
https://github.com/inunosinsi/soycms/blob/master/cms/common/domain/cms/DataSets.class.php
SOY CMSに同梱されているプラグインは前者の方法を採用していますが、設定内容の取り出しが難しいので、プラグインを自作される際は後者のDataSetsを利用することをおすすめします。
DataSetsはキーバリューストア(KVS)形式でデータを管理していて、
DataSets::put(key, value);
でデータを保存し、
$cnf = DataSets::get(key, nullの時に返す値);
でデータを取り出します。
plugin_config ├── config │ ├── PluginConfigSamplePage.class.php │ └── PluginConfigSamplePage.html └── plugin_config.php
のPluginConfigSamplePage.class.phpにDataSetsの処理を加えます。
<?php
class PluginConfigSamplePage extends WebPage {
private $pluginObj;
function __construct(){
SOY2::import("domain.cms.DataSets");
}
function doPost(){
if(soy2_check_token()){
DataSets::put("plugin_config_key", $_POST["n"]);
}
// 同じページにリダイレクト
CMSPlugin::redirectConfigPage();
}
function execute(){
parent::__construct();
$this->createAdd("form", "HTMLForm");
$this->createAdd("number", "HTMLInput", array(
"name" => "n",
"value" => DataSets::get("plugin_config_key", 0)
));
}
function setPluginObj($pluginObj){
$this->pluginObj = $pluginObj;
}
}
コンストラクタでDataSetsクラスを読み込み、HTMLInputとdoPostでDataSetsのデータの出し入れを行っています。
データの出し入れの際にキーとしてplugin_config_keyを用いる事にしました。
DataSetsでのデータのやりとりの良いところは、当プラグインの中だけでなく、PHPモジュール内でもデータのやり取りを簡単に行えるようになることです。
今回のコードは下記のURLで詳細の確認をできるようにしています。
https://github.com/inunosinsi/soycms/tree/master/cms/common/site_include/plugin/plugin_config_save
補足
DataSetsに関して、今回は数字の値を保存しましたが、文字列や配列でも値を保存することが可能です。
DataSetsはタグクラウドプラグインで使用されています。
https://github.com/inunosinsi/soycms/tree/master/cms/common/site_include/plugin/tag_cloud
