Здрасти. Если я ошибся разделом, просьба поправить, лучше раздела для идеи не нашел.
Вступление)
Недавно решил работать под CodeIgniter, удобный-прозрачный-понятный фреймворк. Но как в любом проекте сайта происходит, пришел к необходимости поставить/написать админку. Естественно, начал с изучения существующего, но по некоторым причинам не приуспел в поисках (неделю искал-пробовал), где-то изучение топологии напарывалось на отсутствие нормального дока для программиста, где-то отсутствовала вменяемая структура, раздражала неоправданно высокая интропия. Это так, впечатление, рассказывать подробно не интересно. Вот пришел к тому чтобы попробовать свои силы.
Чего хочется
В первую голову, ядро админки, отдельное от всего остального. Во-вторую, все остальное, как можно догадаться это модули отвечающие за те или иные свойства проекта, к котором будут использованы.
На данный момент ядро
Ядро это контроллер application/controllers/admin.php, который перехватывает все URI ~ /admin.*. Реализует авторизацию, формирование меню модулей, работу админской части модуля. Например, модуль статических страниц для конкретной/страницы/сайта доступен по адресу /admin/module/pages/конкретной/страницы/сайта. Реализован модуль страниц здесь modules/pages/controllers/pages.php (используется HMVC).
Вызов админской части модуля строится так: /admin/module/<moduleName>/[param[/...]]
Для тела админки ядро вызывает метод $this->moduleName->admin([param[,...]]), для менюшной части так же вызывается метод admin_menu([param[,...]]) модуля. Весь вывод этих методов отправляется в шаблон.
По поводу модуля
Модуль это не только админская часть, ведь он предназначен реализовать некоторое свойство, значит модуль имеет методы для вывода для посетителей. Как это реализовано, думаю никак ограничивать не стоит, на откуп разработчику модуля.
Вот, собственно, и вся топология.
Кому интересно, приглашаю обсудить недостатки такой системы.
