Xpoint
   [напомнить пароль]

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

Метки: [без меток]
[удл]
2008-09-05 23:34:19 [обр] insky[досье]

Добрый вечер!

Не так давно решил допилить свои отдельные куски кода в нечто вроде простенькой 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

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

спустя 22 часа [обр] Pil(4/22)[досье]

Добрый вечер! :)
Первое, что смутило:

  1. В шаблон дизайна сайта подключается insky/modules/ %name% / index.tpl - в качестве controller

Определенно идет в разрез с моими взглядами на MVC.
Прошу прощения, времени на изучение исходиков нет, однако могу дать совет (исключительно категории млм) — смотрите в сторону фреймворков типа RoR, Struts2 с целью достижения архитектурной чистоты. ОФФ. и вообще бы посоветовал перейти на руби или джаву :)

спустя 1 день 13 часов [обр] insky[досье]
Прошу прощения естественно index.tpl в качестве viewer
спустя 1 день 7 часов [обр] insky[досье]

Понял следующие вещи:

  1. Нужно сначала сформулировать систему именования классов, функций и переменных

Естественно причесал код в соответсвии с системой именования: http://code.google.com/p/insky/wiki/InskyNamingSystem

  1. Нужно пытаться описывать свою систему в комплексе, чтобы понимать как она работает,

 и где и что можно изменить

  1. Выложил демо версию сайта на основе Insky CMS: http://demo.insky.ru/

Логин: demo@demo.ru + Пароль: demo

  1. Поменял систему обработки ошибок, теперь есть 3 состояния

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


Все это переключается одной кнопкой в панели управления.

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

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

Powered by POEM™ Engine Copyright © 2002-2005