Принципы построения однопользовательской CMS

Apr 23, 2011 21:03

Руководящие принципы
Если у сайта один автор, то обычные CMS избыточны, а программы для написания сайтов не гибки.

Вот основные принципы однопользовательской CMS.
  • Если автор один, незачем генерировать страницы динамически. Можно по команде автора сгенерировать статические страницы. Пусть это займёт большое время, но пользователи, скачивая статичные html-ки получат прекрасное быстродействие. Принцип вообще можно сформулировать так: незачем генерировать каждый раз то, что можно сгенерировать один раз и выдавать пользователю в готовом виде.
  • Вследствие однопользовательской сути невозможен конфликт при работе скриптов, перерабатывающих статичные страницы.
  • Скрипты лучше чем скомпилированная программа своей гибкостью, модернизируемостью. Виндоюзер должен иметь денвер для юзания скриптов. На основе этих принципов можно сформулировать некоторые принципы построения такой системы.
  • Для такой CMS можно использовать php фрэймворки. Неоптимальность функций по быстродействию не играет роли, так как задав некоторое изменение контента автор запускает регенерацию статичных страниц и переключается на другую задачу. А пользователи скачивают статичные html страницы.
  • демоны - это скрипты, генерирующие страницы в соответствии с какими-то правилами и содержимым
  • Содержимое делится на категории по времени актуальности: контент и матрицу. Матрица включает html-разметку и оформление, скрипты javascript, какие-то постоянные блоки, текстовые константы и структуру построения сайта
  • Матрица задаёт типы единиц контента
  • Ядро содержит логику взаимодействия демонов, матрицы, контента и пользователя
  • Ядро и демоны обращаются к фрэймворку, библиотеке функций, фрэймворку и функциям php
  • Библиотека функций - это модули с типовыми функциями, которые нужны для многих демонов, но отсутствуют во фрэймворке Для придания жесткости системе введём правила:
  • Один демон - один php файл. Последовательность запуска демонов определяется ядром на основе конфигурационного файла, доступ к которому даётся пользователю через UI.
  • Скрипты хранятся отдельно от сгенерированного контента, чтобы можно было контент легко загрузить на сервер. Фичи:
  • Существует необходимость интегрировать в CMS наборы html-файлов с папками рисунков с огромным их количеством. CMS должна допускать добавление html файлов простым копированием с дальнейшей обработкой их демонами и интеграцией в общую систему. В частности уже существуют хорошие скрипты для генерации минималистичного красивого html-кода из безобразия создаваемого microsoft office. Обработчик кода MSO - один демон. Для каждой визивиговой софтины может быть написан свой демон.
  • По желанию можно внедрить в генерируемые страницы и php-код, сдерав их нестатичными. Это разрушает систему, но кому-то может быть необходимо Дальнейшее развёртывание системы зависит от:
  1. того, какую гибкость мы хотим получить от системы - это определит набор демонов
  2. какие смысловые единицы содержит наш сайт - это определит матрицу Итак, основные понятия нашей системы: ядро, демон, матрица (шаблон, константы), контент, регенерация.


Кажется что получилось слишком сложно, но для развёртывания формализованной мировоззренческой системы, такой как, например, система автора scorcher.ru, такая CMS подойдёт идеально. В отличии от scorcher.ru, допиливавшегося на коленке по мере развития, и от того довольно корявого, единоличная гибкая CMS даст красивое и шустро работающее решение.

По сути каждая современная CMS реализует какую-то свою матрицу. Scorcher.ru - пример не совсем обычного сайта с более сложной матрицей.

Матрица
Матрица мировоззренческого сайта должна содержать:
  • Древовидную структуру статей
    • Акцентируемая информация: положение в дереве, взаимосвязь с другими элементами - контекст
  • Статьи
    • Акцентируемая информация: цитаты, аксиомы, гипотезы, термины
  • Систему классификации источников - копипасты
    • Акцентируемая информация: какой источник, когда и кем написан, несколько отличающееся оформление
  • Цитатник - аналогично концевым ссылкам в MS Word
    • Акцентируемая информация: быстро показать откуда эта цитата - если из книги - из какой главы, кто автор, когда написано, если надо - контекст; если из фильма - контекст, какая минута - чтобы не заставлять читателя смотреть весь фильм. Возможно размещение более объёмных кусков копипасты, видео или флэш роликов, аудиоподкастов
  • Термины и определения - список терминов и определений с группировкой по алфавиту или последовательности их упоминания с перекрёстными ссылками
    • Демоны также расставляют всплывающие подсказки там, где встречают вхождения терминов в текстах статей. Возможно ручное указание как в вики Вместо комментов для таких сайтов лучше подходит форум. Форум подразумевает большую заинтересованность человека в обсуждении, а не так, чтобы насрать и убежать. Тексты статей могут сопровождаться ссылкой на обсуждение. для получения количества постов в обсуждении (или, например, даты последнего поста в ником участника) можно делать запрос javascript-ом или таки-внедрить php-код. Ну и другой вариант - готовые сторонние скрипты комментов на жабаскрипте с интеграцией с соцсетями. Это для насрал-убежал комментов :)


Демоны
Какие могут быть демоны
  1. демоны wysiwyg софта
  2. демоны wysiwyg скриптов, например демон для размещения контента набранного в [|FCKeditor] на сайте.
  3. демон импорта из tiddlywiki, например
  4. демон подсказок для терминов и определений
  5. демоны генерации sitemap, меню, списков статей по категориям
  6. демон вставки блоков меню, хедера и футера в соответствии с шаблоном
  7. демон исправления абсолютных ссылок на относительные
  8. демон проставления правильных кавычек для каждого языка - «русские», “english”, и прочих типографских красивостей
  9. демон приведения
    к единому виду, например к принятому на сайте оформлению с javascript`овыми эффектами, объединение картинок в галерею
  10. демон-архиватор версий - вызывается в самом начале регенерации и сохраняет архив текущего состояния
  11. демон смены шаблона при сохранении матрицы
  12. демон сжатия html javascript и css наподобие http://webduty.ru/css-optimiser/http://webduty.ru/html-optimiser/index.html и http://webduty.ru/js-packer/
  13. демон-резидент, запускающийся по cron и грабящий контент, либо наоборот, постящий контент куда-то
  14. демон-генератор rss
  15. демон-простановщик дат Могут быть мастера для вызова демонов. Например, мастер регулярных выражений для автозамены по какому-то шаблону по всему сайту. Расстановка каких демонов запускать и в какой последовательности должна быть в ядре.


Каждая матрица должна поставляться с набором демонов для перехода с базовой комплектации CMS на новую матрицу.

Опции демонов
Для генерации с опорой на внутренние файлы или на содержимое уже существующих статичных страниц.
Опция полной перегенерации (удаление всех файлов и перегенерация)

Приёмники информации
Специальная папка для необработанных html
Граббинг контента
Набор (копипаст) в wysiwyg редакторах
Специальная папка для необработанных файлов других форматов

Типовая последовательность действий
Кладём файлы с контентом в папку-приёмник, запускаем демоны с нужными опциями, заливаем полученный статичный сайт, радуемся.

А когда мне это делать?
Вот некогда мне такое писать. Если бы у меня был риталин, м.б. и писал бы по вечерам по полчасика эти скрипты :)

Демонов писать просто, достаточно подрихтовать существующие скрипты. Главное - ядро.

http://vkontakte.ru/note16510481_10765341
Previous post Next post
Up