Some Ideas For Extensions

Since frameworks are very often used as CMS, I was thinking that would be useful having extensions just like, let’s say, Drupal modules…

I mean, for example, having a page for managing extensions: this should allow droping an extension in a certain folder and activate/deactivate those extensions (web interface).

Some ideas:

  • When activated, an extension could perform an inizialation (apply migrations, create directories, etc) and do some clean up when deactivated (migrate down, remove files, etc…)

  • Inject menu items in the application (maybe a new menu widget would be needed?)

Well…that’s the very basic idea…opinions very welcome… :)

[font="Impact"]Framework != CMS[/font]


Thanks for the information!


Yii handles CMS development well but is used for many other web application development projects.

Your requirement could be handled by building modules for your backend (e.g., an extension module) and possibly nested modules for handling extension installations (e.g., installer module), dependency management, dynamic menu generation, block assignment, theme management, etc. For something like a CMS or major e-commerce application, you would probably also want to manage all extensions and other items such as blocks, themes, messages, external library packages, as well as their development versions and dependencies.

Thanks for taking your time! :)

After some thinkg I guess you are very right.

The only thing I would love to see in the core framework is a menu widget that allows modules or extensions to register items there…

  1. Plz do not try to convert Yii to Drupal. Composer packages are already good enough.

  2. You can easily write such widget on your own.

See, the thing is:

  • first you want core widget allowing to register modules

  • then you realize that this widget is useless w/o RBAC control

  • then you want something more twisted

  • and you end up with another bloaty CMF

There are a lot of other options besides Yii that you should be aware of. Maybe you should use one of these.