アドオンの管理プロセス
アドオンのリストを作成する
アドオンのリストは、CS-Cartの管理パネルのアドオン
→アドオン管理
で利用できます。
以下はこのアドオンのリストの作成手順です。
アドオンの予備リストが作成されます。この時点では、_app/addons_のサブフォルダーはアドオンとみなされます。
すべてのフォルダーから _app/addons/[アドオンID]/addon.xml_をロードしようと試みます。
addon.xml
をロードまたは解析できなかった場合、アドオンは無視されます。addon.xml
のXML解析エラーはエラー通知に表示されます。アドオンの名称が取得されます。
addon.xml
のスキームversion3.0を使用している場合、アドオンの名前は_var/langs/ [言語コード]/addons/[アドオンID].po_から取得されます。インストール済みのアドオンのデータは、データベースから取得されリストに追加されます。そのため、アドオンが既にインストールされている場合は、その名前と説明は変更されません。
アドオンのインストール時
データベースの
?:addons
テーブルは、アドオンの登録が無いことを確認するためにチェックされてます。アドオンのスキーマーは
addon.xml
からロードされます。アドオンが
unmanaged
としてマークされている場合、管理パネルのアドオンリストには表示されません。コンソール経由でのみインストールすることが出来ます。アドオンのクラスの自動読み込みを有効にするには、アドオンのフォルダーを
Tygh::$app['class_loader']
に追加します。アドオンの互換性がチェックされます。
HINT
アドオンがサーバー環境またはCS-Cartのバージョンと互換性がない場合、エラーが表示され、インストールが中止されます。
他のアドオンへの依存関係がチェックされます。
HINT
この時点では、競合するアドオンはチェックされず、アドオンの有効化の際にチェックが行われます。
addon.xml
の<functions>
セクションの関数for="before_install
が実行されます。
HINT
関数の実行の結果、データベースエラーが発生した場合、アドオンのインストールは中止され、アドオンはアンインストールされます。
Registry::set('addons.' . $addon)
にエントリが作成されます。disabled
ステータスとアドオンの優先順位は、そこに記録されています。addon.xml
の<queries>
セクションのfor="install
からクエリが実行されます。
HINT
データベースエラーが発生した場合、アドオンのインストールは中止され、アドオンはアンインストールされます。
addon.xml
の<settings>
セクションで指定されたアドオンの設定がデータベースに作成されます。
HINT
データベースエラーが発生した場合、アドオンのインストールは中止され、アドオンはアンインストールされます。
?:addons
および?:addon_descriptions
テーブルにエントリが作成されます。この時点ではアドオンのステータスは無効の状態です。POファイルから言語変数がインストールされます。
テンプレートファイルが var/themes_repository から design/themes にコピーされます。
アドオンの設定値は
Registry::set('addons.' . $addon)
とRegistry::set('settings.' . $addon, $settings)
に記録されます。英語の言語変数は
?:original_values
テーブルに保存されます。商品タブは
[theme名] /templates/addons/[アドオンID]/blocks/product_tabs
からインストールされます。addon.xml
の<functions>
セクションのfor="install
に記述された関数が実行されます。
HINT
データベースエラーが発生した場合、アドオンのインストールは中止され、アドオンはアンインストールされます。
addon.xml
の<status>
セクションがactive
である場合、アドオンは直ちに有効化されます。
HINT
アドオンのアクティベーションが中止されても、インストールは続行されます。ただし、その場合、アドオンはデフォルトで無効のままになります。
app/addons/[アドオンID]/layouts.xml
からレイアウトがインポートされます。キャッシュが削除されます。
デモデータがインストールされます。アドオンがCS-Cartのインストールと同時にインストールされ、[デモデータをインストール]のチェックボックスがオンになっている場合にのみ実行されます。
HINT
デモデータのインストールは、アドオンのインストールとは別のプロセスです。デモデータのインストールが失敗した場合、アドオンのインストールは中止されません。
アドオンのアンインストール時
アドオンが
unmanaged
としてマークされている場合、管理パネルのアドオンリストには表示されません。コンソール経由でのみアンインストールが可能です。アンインストールするアドオンの動作に必要な他のアドオンを見つけるためのチェックが実行されます。該当するアドオンが見つかった場合、アンインストール手順は中止され、メッセージが表示されます。
警告
次のアドオンがインストールされてないため、このアドオンをアンインストールできません:[対象のアドオン名]。
addon.xml
の<functions>
セクションに書かれているfor="uninstall"
の関数が実行されます。?:addons
テーブルと?:addon_descriptions
テーブルからアドオンのエントリー削除されます。アドオンの設定が削除されます。
アドオンの言語変数が削除されます。
addon.xml
の<queries>
セクションのfor="uninstall"
に書かれているクエリが実行されます。アドオンの製品タブが削除されます。
アドオンのテンプレートが
design/themes
から削除されます。アドオンのレイアウトが元に戻ります。
Registry::get('addons.' . $addon_name)
は削除されます。アドオンが使用していたHookが
Registry::get('hooks')
(登録済みのHookリスト)から削除されます。キャッシュが削除されます。
アドオンの有効化時
アドオンのスキーマーは
addon.xml
からロードされます。アドオンが
unmanaged
としてマークされている場合、管理パネルのアドオンリストには表示されません。コンソール経由でのみう有効化できます。次のフックポイントの関数が実行されます。
すべての有効化されているアドオンがチェックされ、アドオンがそれらのいずれかの競合として定義されているかどうかが確認されます。
HINT
競合するアドオンが見つかった場合、警告が表示され、アクティベーションは中止されます。
以下の関数が存在するか確認されます。
関数が存在する場合、次の引数で呼び出されます。
($new_status, $old_status, $on_install)
このアドオンの競合として定義されているアドオンが、すべて無効になっているかどうか確認されます。
HINT
競合するアドオンが有効化されている場合、警告が表示され、アクティベーションは中止されます。
?:addons
テーブルの当アドオンのstatus
フィールドの値がAに変更されます。以下の関数が存在するかどうかを確認するためにチェックが実行されます。
関数が存在する場合、次の引数でこの関数が呼び出されます:($new_status)
商品タブのステータスが更新されます:アドオンの
product_tabs
は有効のまま。このアドオンのステータス
A
はRegistry::set('addons.[アドオンID].status')
に記録されます。
アドオンの無効時
アドオンのスキーマーは
addon.xml
からロードされます。アドオンが
unmanaged
としてマークされている場合、管理パネルのアドオンリストには表示されません。コンソール経由でのみ無効化できます。次のフックポイントの関数が実行されます。
以下の関数が存在するかどうかを確認するためにチェックが実行されます。
関数が存在する場合、次の引数で関数が呼び出されます。
($new_status, $old_status, $on_install)
?:addons
テーブル内の当アドオンのstatus
フィールドの値がD
に変更されます。以下の関数が存在するかどうかを確認するためにチェックが実行されます。
関数が存在する場合、次の引数で呼び出されます。($new_status)
商品タブのステータスが更新されます。アドオンの
product_tabs
が無効になります。Registry::set('addons.[アドオンID].status')
にステータスD
がセットされます。
最終更新