Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Подскажите по организации каталогов самописной CMF


Автор: insky 5.9.2008, 23:09
Добрый вечер!

Не так давно решил допилить свои отдельные куски кода в нечто вроде простенькой CMS для дальнейшего использования в проектах. 
Использованы технологии: Apache / Php 4 / MySql 4 / Smarty / TinyMCE / ModRewrite

Принцип работы:

   1. Все запросы перенаправляются на index.php
   2. В зависимости от запрашиваемого адреса проводится сопоставление с таблицей модулей
   3. Поиск модуля в подкаталоге insky/modules/ %name% / index.php - исполняется в качестве Model и Controller
   4. В папке /insky/templates/ - происходит поиск шаблона дизайна сайта smarty tpl
   5. В шаблон дизайна сайта подключается insky/modules/ %name% / index.tpl - в качестве controller
   6. exit

Также есть папка с статическими html страницами, которые не изменяются /sites/content/ это в качестве замены хранению статики в БД. Я написал простейший installer, позволяющий развернуть CMS на локальном хосте, запускается автоматически в билде v002.

Особенно интересно было бы услышать критику по структуре каталогов, и базовым группам функций таким как class.sql class.string, class.users, чтобы до того как начинать серъезное развитие CMS понять жизнеспособность архитектуры.

Insky CMS состоит из двух каталогов:

/insky/ - непосредственно CMS система с модулями и шаблонами
/sites/ - файлы относящиеся только к текущему сайту


Каталог insky состоит из следующих подкаталогов:

/class/ - Базовые классы (точнее группы функций в одном файле)
/ext/ - Внешние расширения и модули / сторонние разработчики /
/getter/ - Внешние расширения и модули
/img/ - Папка для хранения общих изображения
/modules/ - Модули сайта
/templates/ - Шаблоны сайта
/tiny_mce/ - Редактор tiny_mce

Каталог sites состоит из следующих подкаталогов:

/.temp/ - логи, флаги, временные файлы
/content/ - содержимое статических HTML страниц сайта
/options/ - sitemap,robots,favicon и другие вспогательные файлы
/upload/ - пользовательский контент


Загрузить текущую версию 002 можно с Google Code http://code.google.com/p/insky/downloads/list
Cкачать исходные коды из SVN http://code.google.com/p/insky/source/checkout
Документация, которая написана на данный момент http://code.google.com/p/insky/w/list

Заранее благодарю за любые замечания! Буду рад если, кто нибудь захочет присоединиться к разработке.

Автор: HackMan 6.9.2008, 12:53
Извиняюсь, времени ноль, прочитал через строчку, по диагонали. Пока одно небольшое замечание - всё что не должно отображаться на сайте (особенно временные файлы, логи, инфа о сессиях и т.д.) лучше хранить за пределами public_html

Автор: insky 9.9.2008, 17:49
Понял следующие вещи:
1) Нужно сначала сформулировать систему именования классов, функций и переменных
Естественно причесал код в соответсвии с системой именования: http://code.google.com/p/insky/wiki/InskyNamingSystem

2) Нужно пытаться описывать свою систему в комплексе, чтобы понимать как она работает,
 и где и что можно изменить

3) Выложил демо версию сайта на основе Insky CMS: http://demo.insky.ru/
Логин: demo@demo.ru + Пароль: demo 

4) Поменял систему обработки ошибок, теперь есть 3 состояния
Production -> при этом ничего из ошибок в браузер не выводится
Localhost -> при этом выводятся критические ошибки
Max.Debug -> при этом выводяться все Notice, панель дебаггинга smarty и.т.д.
---
Все это переключается одной кнопкой в панели управления.

5) Последнюю версию Insky CMS можно скачать http://code.google.com/p/insky/downloads/list

PS: На этой самописной CMS, реализованы сайты http://students.tomsk.ru и http://vseznaut.ru

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)