今回はプラグイン毎に詳細画面を持たせる拡張ポイントのsoyshop.config.phpを紹介します。

SOY Shopプラグインの拡張ポイントについて


詳細画面を持つことでプラグイン毎の設定画面を設けることが可能になります。


はじめにインターフェースを確認してみる。

/soyshop/webapp/src/logic/plugin/extensions/soyshop.config.php

class SOYShopConfigPageBase implements SOY2PluginAction{

	private $moduleId;

	/**
	 * @return string
	 * プラグイン毎の詳細ページにコンテンツを表示
	 */
	function getConfigPage(){
		return "";
	}

	/**
	 * @return string
	 * プラグイン毎の詳細ページのタイトルを表示
	 */
	function getConfigPageTitle(){
		return "";
	}

	/**
	 * @return string
	 * プラグインの説明を表示
	 */
	function getConfigPageDescription(){
		return "";
	}

	/**
	 * プラグイン毎の詳細ページにリダイレクトする
	 */
	function redirect($query = ""){
		if(strlen($query) < 0) $query = "&" . $query;
		SOY2PageController::jump("Config.Detail?plugin=" . $this-<moduleId . $query);
	}

	function getModuleId() {
		return $this->moduleId;
	}
	function setModuleId($moduleId) {
		$this->moduleId = $moduleId;
	}
}

今回の拡張ポイントはプラグインのディレクトリ内にファイルを作成することで、

http://ドメイン/CMSインストールディレクトリ/soyshop/index.php/Config/Detail?plugin=プラグインID

という規則で新たなページが作成されます。


事前にsoyshop.info.phpで上記のURLでリンクを生成している必要があります。

プラグイン毎の詳細画面へのリンクの拡張ポイントsoyshop.info.php


PAY.JPクレジット支払いモジュール(ID:payment_pay_jp)を参考にして各メソッドを見てみると、


soyshop_config


getConfigPageTitleとgetConfigPageのメソッドは上記のキャプチャに記載された箇所に文字列を出力します。

getConfigDescriptionPageメソッドは使われておらず、表示箇所も微妙なのでここでは触れないでおく。


getConfigPageメソッドは見ての通り、膨大な文字列を返すことになるので

PAY.JPクレジットカード支払いモジュールの該当箇所を見ても、

soyshop
└── webapp
    └── src
        └── module
            ├── features
            │   └── payment_pay_jp
            │       └── module.ini
            └── plugins
                └── payment_pay_jp
                    ├── config
                    │   ├── PayJpConfigPage.class.php
                    │   └── PayJpConfigPage.html
                    ├── form
                    │   ├── order
                    │   │   ├── CapturePage.class.php
                    │   │   ├── CapturePage.html
                    │   │   ├── NoCapturePage.class.php
                    │   │   └── NoCapturePage.html
                    │   └── user
                    │       ├── CreditMemberPage.class.php
                    │       └── CreditMemberPage.html
                    ├── logic
                    │   └── PayJpLogic.class.php
                    ├── option
                    │   ├── PayJpOptionPage.class.php
                    │   └── PayJpOptionPage.html
                    ├── payjp(ディレクトリ以下は省略)
                    ├── soyshop.config.php
                    ├── soyshop.info.php
                    ├── soyshop.operate.credit.php
                    ├── soyshop.order.mail.php
                    ├── soyshop.payment.php
                    └── util
                        └── PayJpUtil.class.php

soyshop.config.php

function getConfigPage(){
	SOY2::import("module.plugins.payment_pay_jp.config.PayJpConfigPage");
	$form = SOY2HTMLFactory::createInstance("PayJpConfigPage");
	$form->setConfigObj($this);
	$form->execute();
	return $form->getObject();
}

getConfigPageメソッド内でSOY2HTMLを利用するのが一般的です。

SOY2HTMLで処理とデザインを切り分ける


redirectメソッドはgetConfigPageメソッド内で

$this->redirect("updated");のように使用すると、

http://ドメイン/CMSインストールディレクトリ/soyshop/index.php/Config/Detail?plugin=プラグインID&updated

のようにURLを生成した後リダイレクトします。