Вносить изменения в папке /ygin
запрещено, т.к. это приведёт к затиранию этих изменений в процессе обновления.
Если возникло желание изменить стили оформления какого-либо модуля, поставляемого вместе с ygin или же изменить программный код, необходимо выполнить переопределение соответствующих файлов модуля.
1. Переопределение представлений и ресурсов (assets)
Для переопределения файлов модуля необходимо:
- Переводим сайт в режим отладки. Для этого в файле
/protected/config/local.php
изменяем константуYII_DEBUG
в значениеtrue
.
defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL', 3);
- Перейти по ссылке в браузере
ваш_домен.ru/override/
, где галочками отметить именно те файлы, которые вам необходимо изменить. В процессе переопределения соответствующие файлы представлений и ресурсов будут созданы в папке/themes
.
Рассмотрим в качестве примера изменение стилей оформления модуля Новости
- Переопределяем .css файлы отображения списка и одиночной новости.
- Находим появившиеся файлы в папке
/themes/business/views/news/assets/news.css
, в нём можно вносить изменения в существующие стили оформления новостей, не опасаясь, что они будут затёрты в процессе обновления системы.
2. Переопределение контроллеров
1. Создаем класс контроллера. Например для переопределения ProductController модуля shop создаем класс: protected/modules/shop/controllers/MyProductController.php
2. Собственно для переопределения контроллера необходимо воспользоваться стандартным функционалом yii (конфиг приложения config/project.php):
'modules' => array( 'ygin.shop' => array( 'controllerMap' => array( 'product' => 'application.modules.shop.controllers.MyProductController', ), ),
3. Переопределение моделей
1. Создаем класс новой модели. Например для модели новостей MyNews класс будет располагаться тут: protected/modules/news/models/MyNews.php
:
class MyNews extends News { // добавляем новое свойство public $newVar = null; // переопределяем правило для урлов public function getUrl() { ... } }
Имя класса должно совпадать с именем файла.
2. В конфиге приложения protected/config/project.php
прописывает соответствия моделей:
return array( // используемые в проекте модули 'modules' => array( ... ), 'components'=>array( ), 'models' => array( 'News' => 'MyNews', // или 'application.modules.news.models.MyNews', если модель не импортирована ), );
4. Переопределение класса модуля
1. Создаем класс модуля. Например, переопределяем модуль Интернет-магазина: protected/modules/shop/MyShopModule.php
2. Рассмотрим исходник класса:
//импортируем родительский модуль yii::import('ygin.modules.shop.ShopModule'); class MyShopModule extends ShopModule { public function init() { parent::init(); $this->setImport(array( //импортируем родительские модели по необходимости 'ygin.modules.shop.models.*', 'ygin.modules.shop.controllers.*', )); //т.к. по-умолчанию контроллеры ищутся в папке controllers текущего модуля //то необходимо указать где искать контроллеры $this->setControllersPath('ygin.modules.shop.controllers'); // либо можем указать базовый путь модуля на родительский: $this->setBasePath(Yii::getPathOfAlias('ygin.modules.shop')); ... }
3. В конфиге указываем новый класс модуля:
'modules' => array( 'ygin.shop' => array( 'class' => 'application.modules.shop.MyShopModule', ), ),
О том как создать свои новые компоненты, модули читайте в отдельном разделе.
Где его скачать?
тут все обнаружил
Карта сайта