SOY CMS / SOY Shop

ブログトップ

SOY Shopプラグインを複製する2

2014年03月24日

先日投稿しましたSOY Shopプラグインを複製するという記事ですが、

カスタム支払プラグインの複製を行った時に記載されていた内容ではできなかったという意見が挙がっていましたので、

今回は拡張ポイント以外のファイルがあるプラグインの複製について記載します。

SOY Shopプラグインを複製する

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




カスタム支払モジュール(payment_custom)のファイル構成を見ると、



soyshop.***.phpの拡張ポイントの形式のPHPファイル以外に

common.phpとSOYShopPaymentCustomConfigFormPage.class.php

という二つのファイルがあります。


payment_custom2というプラグインを作成して、

複製した方だけを有効にしていれば問題は発生しませんが、

複製前のpayment_customと一緒に有効にすると、

クラス名の重複エラーが発生します。


具体的にいうと、

common.phpも***ConfigFormPage.class.phpも開くとクラスファイルになっているので、

複製元と複製したプラグインを同時に有効にすると同じクラス名のファイルをインクルードすることになりエラーとなります。


ここでの対処法は、

common.phpの方は開くとclassのみなので、クラス名の変更のみを行います。


class PaymentCustomCommon {を

class PaymentCustomCommon2 {にする


各拡張ポイントのファイルを開いて、


$custom = PaymentCustomCommon2::getCustomConfig();

↑ このようにPaymentCustomCommonとクラス名から書かれているものをすべて新しいクラス名に変更します。




次にSOYShopPaymentCustomConfigFormPage.class.phpですが、

ファイル名とクラス名を合わせなければならないので、

まずはファイル名を下記のように変更します。

SOYShopPaymentCustom2ConfigFormPage.class.php


同名のHTMLファイルがある場合はHTMLファイルの方も変更します。

SOYShopPaymentCustom2ConfigFormPage.html


PHPファイルの方を開いて、


class SOYShopPaymentCustom2ConfigFormPage extends WebPage{

	private $config;

	function SOYShopPaymentCustom2ConfigFormPage() {

	}
}

クラス名と同名の関数名も変更します。


このファイルはsoyshop.config.phpでincludeされているので、


include_once(dirname(__FILE__) . "/SOYShopPaymentCustom2ConfigFormPage.class.php");
$form = SOY2HTMLFactory::createInstance("SOYShopPaymentCustom2ConfigFormPage");
$form->setConfigObj($this);
$form->execute();
return $form->getObject();

上記のように新しいファイル名とクラス名に変更します。


これで複製作業に関して大体の作業は終わりです。

この後にエラーメッセージが表示された場合はフォーラムまでご連絡ください。