файлы конфигурации модулей с настройками пользователей

В Юпи! используется объединение файлов конфигурации для модулей. Каждый модуль имеет свой файл конфигурации, например, вот такой.

Во время запуска, конфигурационные файлы всех модулей объединяются в один общий файл, который и становится конфигурацией приложения, происходит это вот здесь.

Для улучшения производительности полученный файл кэшируется, при условии, что 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 или Юпи! - делайте это именно в этом файле.

Если проект работает в "боевом режиме" не забудьте сбросить кэш настроек. Подробнее

При возникновении проблем - напишите нам!