Примечание. Это руководство предназначено для osCommerce v4.
Основные положения:
1. Все расширения должны быть помещены в отдельную папку.
2. Имя файла класса должно совпадать с именем папки.
3. Шаблоны должны быть помещены в папку "views".
*** Виджеты ***
если вы хотите использовать виджеты в расширениях
1. Добавить метод getWidgets с параметром $type и описать виджеты в массиве
пример:
return [
[
'name' => 'CustomerLoyalty\ShoppingCart', 'title' => 'Customer Loyalty Info Box', 'description' => '', 'type' => 'cart',
],
];
в этом случае ShoppingCart (в подпапке \ShoppingCart) является виджетом ( ShoppingCart.php), который можно использовать для настройки тем.
2. чтобы отобразить дополнительные настройки виджета, используйте метод showSettings
пример:
public static function showSettings($settings){
return self::begin()->render('settings.tpl', ['settings' => $settings]);
}
*** Начальная загрузка ***
если вы хотите использовать персональные контроллеры
1) Создайте класс в файле с именем Bootstrap.php и поместите в корневой каталог вашего расширения.
use yii\base\Application;
use yii\base\BootstrapInterface;
class Bootstrap implements BootstrapInterface {
public function bootstrap($app) {
\Yii::setAlias('@your-extension-alias', dirname(__FILE__));
if ($app instanceof \yii\web\Application) {
if ($app->id == 'app-frontend') {
$app->controllerMap = array_merge($app->controllerMap, [
'frontend-controller' => ['class' => 'common\extensions\your-extension\frontend\controllers\your-controller'],
]);
} elseif ($app->id == 'app-backend') {
$app->controllerMap = array_merge($app->controllerMap, [
'backend-controller' => ['class' => 'common\extensions\your-extension\backend\controllers\your-controller'],
]);
}
}
}
}
2) включите ваше расширение и попробуйте запустить действие index https://yoursite/frontend-controller
*** Меню администратора ***
если вы хотите использовать меню в расширениях
1. Добавьте метод getAdminMenu
*** Hooks ***
если вы хотите использовать хуки в расширениях
getAdminHooks
Кроме того список доступных значений page_name и page_area:
'customers/customeredit', ''
'customers/customeredit', 'personal-block'
'customers/customeredit', 'left-column'
'customers/customeredit', 'right-column'
'categories/brandedit', ''
'categories/brandedit', 'tab-navs'
'categories/brandedit', 'tab-content'
'categories/brandedit', 'main-tab'
'categories/brandedit', 'desc-tab'
'categories/brandedit', 'seo-tab'
'categories/productedit', ''
'categories/productedit', 'details-left-column'
'categories/productedit', 'details-right-column'
'categories/categoryedit', ''
'categories/categoryedit', 'tab-navs'
'categories/categoryedit', 'tab-content'
'categories/categoryedit', 'main-tab'
'categories/categoryedit', 'desc-tab'
'categories/categoryedit', 'seo-tab'
'orders/process-order', ''
'orders/process-order', 'totals-block'
'orders/process-order', 'btn-bar-top'
'orders/process-order', 'btn-bar-bottom'
*** Установщик расширения ***
1) extends \common\classes\modules\ModuleExtensions
2) install (example)
public function install($platform_id){
parent::install($platform_id);// install in liek other modules
// install extention envirenment
$migration = new \common\classes\Migration;
$migration->addTranslation(['admin/main'], [
//add keys
]);
return;
}
2) ckeck extension enabled - use \common\helpers\Acl::checkExtensionAllowed($extName, 'allowed')
public static function allowed() {
return self::enabled();
}