プラグインの詳細設定画面で設定を保存する

soycms_plugin_config_items


プラグインの詳細設定画面で設定項目を追加するで設けた項目を介してデータの保存と取り出しを行ってみます。

プラグインの設定内容を保存する方法は、プラグインのクラスのプロパティ値を利用して、

/ドキュメントルート/サイト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モジュール内でもデータのやり取りを簡単に行えるようになることです。

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

同じカテゴリーの記事