ブログトップ
SOY Shopプラグインを複製する2
2014年03月24日
先日投稿しました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();
上記のように新しいファイル名とクラス名に変更します。
これで複製作業に関して大体の作業は終わりです。
この後にエラーメッセージが表示された場合はフォーラムまでご連絡ください。