Сейчас начальный этап формирования CMS, но общий принцип следующий: создать XML документ и отдать на обработку XSLT процессору. Тоесть имея различные типа данных, например post - стаья, menu - список постов, другие ссылки, user - информация о пользователе, history - история sql запросов, tag - облако ключевыех слов и т.д. мы формируем XML документ вида
<doc> <menu> <rows> ... </rows> </menu> <post> ... </post> <tag> ... </tag> <...> ... <...> </doc>
затем отдавая его XSLT процессору мы можем получить любой HTML документ на выходе. Тоесть для генерации нужного контент необходимо иметь
- источники данных - таблицы
- объекты генерирующие куски XML документов
- сборщик конечного XML документа и XSLT процессор
затем для возможно добавление системы кеширования контента, но это позже Сейчас система имеет 4 стабильных модуля:
- ffcgi - единый модуль, имеет функции фильтрацию CGI запросов, закачки файлов, проверки переменных, систему обработчиков, централизует CGI запросы
- user - модуль отвечающий за авторизацию, данные хранит в 3 таблицах users,groups,sessoin. пока просто являет заглушкой, далее может контролировать другие модули
- base - единый модуль, отвечающий за подключение к базе, предоставляет функцию для генерации кусков XML документа, отвечает за подключение
- xslt_proc - XSLT процессор, содержит функци преобразования XML документов, работает как с файлами так и с текстовыми массивами
Сейчас необходимо нарабатывать модули вставки в таблицы, например необходимо механизм закачки файлов на сервер, генератор облака тегов и тд. Что бы не было разногласий с закачкой, я предлогаю сделать много способов закачки, потому что все они нужны. Например, часто бывает необходимо просто добавить маленькую фотку, без всяких ссылок, возможно даже без изменения размера и генерации превьющки. Но так же необходимо, чтобы например Катя могла выложить оригинал работы в Gimp, при том он должен иметь превьющку и оригинал, ведь ей за это платят. Мы можем просто сделать форму на табах, как главная на эксмаше. Для этого в базе есть таблица: files она имеет поля FILENAME и WWWNAME и некоторые другие, я предпологаю что имея данных в этой таблице мы сможем полностью контролировать закачанные файлы, например если при закачке файла выбран простой вариант то имя файла, например, картинки находится в поле WWWNAME, тогда программа просто даёт ссылку на него или вставляет как картинку, если имеется оригинал в FILENAME и превьюшка в WWWNAME то CMS генерирует картинку ссылку на файл оригинал. После картинок модуль можно расширить работой с архивами и др.
Я не делаю пока централизованного места настройки, так как пока не совсем ясно как сделать лучше, возможно нам придётся сделать много блогововую CMS, тоесть например у нас 1 общая страница, но в зависимости от автора разная компоновка и оформление и тд. По этому пока из конфига беру только данные для подключения.
Для доработки модуля уплоада необходима функция генерации превьщки вида: def image_resize(fullname,x,y,save_dir): тут возможны параметры по умолчанию например x=100,y=100,save_dir="/images/" функция может возвращать не 1 значение, а не сколько, например return filename,path,sizeX,sizeY,размер_картинки_в_кб единственное что она должна сделать, это
- преобразовать картинку
- вернуть имя позволяющее работать с этой картинкой
- чтобы в других кусках кода не заниматься обработкой имени разделить его на имя файла/путь к файлу
- если не получилось вернуть None


