файлы конфигурации модулей с настройками пользователей
В Юпи! используется объединение файлов конфигурации для модулей. Каждый модуль имеет свой файл конфигурации, например, вот такой.
Во время запуска, конфигурационные файлы всех модулей объединяются в один общий файл, который и становится конфигурацией приложения, происходит это вот здесь.
Для улучшения производительности полученный файл кэшируется, при условии, что YII_DEBUG === false.
Если при разработке проекта вам потребуется изменить настройки какого-либо модуля - делать это непосредственно в файле конфигурации модуля мы НЕ рекомендуем, так как это может привести к проблемам при обновлении модуля.
Вместо непосредственной правки файл конфигурации модуля - создайте файл в каталоге ./protected/config/userspace
, файл должен иметь имя, совпадающее с именем файла настроек модуля, например если в модуле "Блоги", файл с настройками называется "blog.php", то и в каталог userspace необходимо положить файл "blog.php".
В файлах настроек модулей используются следующие категории:
- import - для дополнения используемых путей импорта классов
- cache - для настройки кеширования
- preload - для настройки компонентов, которые будут изначально загружены приложением
- component - для описания компонентов, которые будут доступны в приложении
- rules - для описания настроек маршрутизации, которые необходимы для вашего модуля
- module - для описания вашего модуля, используемых модулем компонентов, настроек модуля
Подробнее остановимся на категории "rules". Очень часто требуется менять стандартную маршрутизацию модулей: сделать урл-ы более SEO-оптимизированными, повторить структуру урл-ов уже имеющегося сайта и т.д.
Рассмотим на примере файла конфигурации для модуля "Блоги":
return array(
'module' => array(
'class' => 'application.modules.blog.BlogModule',
),
'import' => array(),
'component' => array(),
'rules' => array(
'/post/.html' => 'blog/post/view',
'/posts/tag/' => 'blog/post/tag',
'/rss/blog/' => 'blog/blogRss/feed',
'/rss/posts/' => 'blog/blogRss/feed',
'/blogs/' => 'blog/blog/view',
'/blogs' => 'blog/blog/index',
'/posts' => 'blog/post/index',
'/posts/archive' => 'blog/archive/index',
'/posts/categorys' => 'blog/post/categorys',
'/posts//' => 'blog/post/blog',
'/posts/category/' => 'blog/post/category'
),
);
На сайте amylabs портфолио сделано именно через модуль блогов, каждая работа - это по сути пост из определенного блога.
Как мы видим, вместо "posts" - мы используем "works" (http://amylabs.ru/works), аналогично и для конкретного поста/работы.
Чтобы это работало мы создали в каталоге ./protected/config/usespace
файл "blog.php":
return array(
'rules' => array(
'/post/.html' => false, // запрет урл-ов из модуля для избежания дублирования страниц
'/posts' => false, // запрет урл-ов из модуля для избежания дублирования страниц
'/works' => 'works/index',
'/works/' => array('blog/post/view', 'urlSuffix' => '.html')
)
);
Первые две строчки отменяют действия стандартных для модуля урл-ов (из файла настроек модуля), вторые две строки вводят новые правила уже для работ.
В версии 0.8 мы вернули возможность создания конфигурационного файла для всего проекта. В версиях до 0.7 он назывался userspace.php, с версии 0.8 он называется project.php
Данный файл расположен в каталоге ./protected/config/, при сборке конфига он объединяется с результирующим файлом-конфигом для модулей и main.php
Т.е. если в своем проекте вы хотите гарантированно переопределить какой-то компонент Yii или Юпи! - делайте это именно в этом файле.
Если проект работает в "боевом режиме" не забудьте сбросить кэш настроек. Подробнее
При возникновении проблем - напишите нам!
No Comments