Подскажите по организации каталогов самописной CMF

 
0
 
PHP
ava
insky | 06.09.2008, 00: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

Заранее благодарю за любые замечания! Буду рад если, кто нибудь захочет присоединиться к разработке.
Ответы (2)
ava
HackMan | 06.09.2008, 12:53 #
Извиняюсь, времени ноль, прочитал через строчку, по диагонали. Пока одно небольшое замечание - всё что не должно отображаться на сайте (особенно временные файлы, логи, инфа о сессиях и т.д.) лучше хранить за пределами public_html
ava
insky | 09.09.2008, 17:49 #
Понял следующие вещи:
1) Нужно сначала сформулировать систему именования классов, функций и переменных
Естественно причесал код в соответсвии с системой именования: http://code.google.com/p/insky/wiki/InskyNamingSystem

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

3) Выложил демо версию сайта на основе Insky CMS: http://demo.insky.ru/
Логин: [email protected] + Пароль: 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
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
  HackMan   insky
advanced
Отправить