Объектная модель. CMS этого типа работают с классами и объектами. Классы определяют структуру данных и набор атрибутов (свойств). Объект является экземпляром класса, его задача - хранить в себе реальные данные. Объект может наследовать свойства, содержание и поведение объектов, которые в них содержатся.
Существуют и другие модели, однако они распространены в гораздо меньшей степени.
При запросе какой-либо страницы выполняется программный код, обрабатывающий запрошенный тип данных. Он извлекает данные из хранилища (коим может быть база данных или файловая система), после чего собирает страницу на основе шаблонов и представляет ее пользователю. Благодаря системе шаблонов решается вопрос одновременного обновления сразу всех страниц (например, при необходимости редизайна), плюс - появляется возможность создания нескольких вариантов представления страниц.
CMS также различаются по месту хранения сгенерированных страниц:
Динамические. Страница формируется динамически, как только приходит запрос. Это самый ресурсоемкий вариант, поскольку движок работает постоянно. Если посетителей очень много, то возможно чрезмерное использование ресурсов сервера. Главное преимущество подобной схемы - каждый посетитель получает самый свежий вариант контента. Кроме того, возможна индивидуальная настройка страницы под каждого пользователя.
С динамической сборкой. Динамически собранная (после соответствующей команды) страница кэшируется до тех пор, пока для нее не приходит обновление (очередная команда на регенерацию). В этот момент кэш сбрасывается, и цикл повторяется. Возможно учитывать пользовательские предпочтения: страница каждый раз собирается динамически, но из статических (сгенерированных заранее) фрагментов. Если какой-либо фрагмент обновляется, то при следующем запросе он (один фрагмент, а не все вообще) будет перегенерирован и занесен в кэш.
Генерация статических страниц на основе динамических данных. При обновлении CMS перегенерирует все связанные страницы. Поэтому при запросе выдается уже сформированная статическая (возможно, собранная с помощью SSI[Server-Side Includes - включения на стороне сервера, то есть в страничку вставляются динамически сгенерированные сервером данные (например, IP-адрес посетителя и др.)]) страница.
Современное аппаратное обеспечение хостинг-провайдеров вполне может потянуть первый вариант даже для сильнопосещаемого ресурса. Однако при необходимости экономии ресурсов лучше применять два других.
Весьма и весьма полезен для новичков ресурс «Постройка.ру». Тут подробно рассказывается о создании сайтов, немало статей на тему «HTML», «Графика» и «Дизайн». Хорошо известен в Сети справочник, выходящий на этом сайте: «HTML: шаг за шагом». А еще есть такой раздел, как «Справочная»: определения различных терминов, связанных с Интернетом, разбиты по алфавиту. Самым интересным местом на «Постройке.ру» (по крайней мере, для меня) является форум. Здесь обсуждаются материалы, опубликованные на сайте, и не только. Кстати, оставив там ссылку на свой сайт, я в за несколько дней получил больше десятка отзывов.
За несколько лет системы управления содержимым веб-ресурсов значительно усовершенствовались. Их можно классифицировать по областям применения.
Порталы. Используются для информационных ресурсов, основной целью ставят максимальное упрощение публикации статей и новостей. Могут включать в себя нижеперечисленные типы CMS как самостоятельные модули. Наиболее известные представители данного класса: AngelineCMS, Bes-cms, CoolPHP, CPG-Nuke, вебZE, Xaraya, xNuke, XOOPS и др.
Движки без SQL. Это ответвление в разработке CMS развито относительно слабо, так как использование в качестве хранилища информации файлов вместо таблиц базы данных сопряжено с множеством труднорешаемых проблем (таких, как одновременная запись в один файл несколькими копиями скрипта)[Скрипт (от англ. Script) есть интерпретируемая (то есть не компилируемая заранее) программа]. Достоинство этих CMS - в доступности для модификации контента и возможности размещения на бесплатных хостингах[Хостинг (от англ. Hosting) - сервер сети, предоставляющий услуги размещения сайтов]. Есть несколько реализаций данной идеи: Cute News, DeeLight CMS, Progressive, SAPID.
Блог[Происходит от англ. weblog. То есть weblog - blog - блог. Русский термин - «сетевой дневник»] - это сайт, на котором находятся личные заметки автора. В основном заметками являются ссылки на сайты, которые кажутся владельцу ресурса наиболее интересными, и комментарии к ним. Блог может содержать не только ссылки, но и просто электронный дневник пользователя.
К этой категории можно отнести следующие CMS: b2evolution, bBlog, BLOG:CMS, MyPHPblog, Nucleus, pLog, pMachine Free, Serendipity, Textpattern, WordPress, XHP.
Уже ведутся дискуссии о том, кто же влиятельнее: СМИ или блоги? Например, в Штатах выходит телепередача о блогах.
Форумы - это инструмент для общения на сайте. Сообщения в форуме в чем-то похожи на почтовые - каждое из них имеет автора, тему и содержание. Но для того, чтобы отправить сообщение в форум, не нужна никакая дополнительная программа - нужно просто заполнить соответствующую форму на сайте. Принципиальное свойство форума заключается в том, что сообщения в нем объединены в треды (от англ. thread - «нить»). Когда вы отвечаете в форуме на чье-то сообщение, ваш ответ будет «привязан» к исходному сообщению.
К форумам, достойным внимания, можно причислить FUDforum, openBB, Phorum, phpBB, PunBB, W-Agora, XMB, Zorum, ExBB, IPB, vBulletin.
Магазины. К магазинам отнесем любой сайт, с которого можно заказать какой-либо товар. В данном случае в определение «товара» может входить абсолютно все, включая время доступа в Интернет, минуты сотовой связи. Абсолютное большинство интернет-магазинов являются нелегальными[Вопросы - к автору. - Прим. ред].
CMS, позволяющие создать виртуальный магазин: MyMarket, osc2nuke, osCommerce, Zen Cart.
Групповая работа (Groupware) - комплекс программного обеспечения, позволяющий организовать работу предприятия, отношения с клиентами и заказчиками в Интернете. Обычно представляет собой полностью или частично закрытую часть сайта с возможностью отслеживать сроки выполнения поставленных задач, распределение ролей и временных нормативов. Иногда можно выносить вопросы на обсуждения и решения вышестоящего руководства.
Как правило, пользуются следующими CMS: dotProject, eGroupWare, MoreGroupware, phpCollab, PHProjekt.
Обучение (e-Learning) - дистанционная форма обучения с использованием Интернета. Онлайновая форма обучения уже не один год является «маяком», на который ориентируются образовательные системы разных стран мира. Главным стратегическим направлением является быстрое обновление знаний и эффективное использование информации.
Таких систем немного: ATutor, Claroline, LogiCampus, Moodle, Segue, Site@School.
Базы знаний (KnowledgeBase) позволяют накапливать опыт множества разработчиков, работающих (или работавших) в какой-либо одной. Каждая такая база знаний имеет свою специфичную структуру, поэтому никаких общих решений на данный момент не предложено. Самая известная из существующих баз знаний - RFC[Request For Comment - запрос на комментирование. Обычно описание работы с каким-либо протоколом и т. п. Публикуется в виде небольшого документа - как правило, с примером программы].
Биллинг (Billing). Программное обеспечение, позволяющее провайдерам[Провайдер (от англ. Provider) - организация, предоставляющая какие-либо услуги (как правило, информационные)] и реселлерам[Реселлер (от англ. Reseller) - организация или частное лицо, занимающееся продажей услуг крупных компаний рядовым потребителям] работать со счетами клиентов. Такие CMS являются неотъемлемой частью крупной системы учета потребления услуг пользователями. Задача же CMS данной категории - в отображении информации о предоставленных услугах, подключении новых услуг, изменении текущих параметров, приеме платежей и т. п. Часто такие системы пишутся своими силами. Для примера можно привести биллинг-панель RuWEB[Помимо нее автор имел удовольствие работать с net.ru, agava.ru, IPI.CONTROL, CLX.ru, Spaceвеб, - ни одна фирма не может порадовать гибкими тарифными планами]. В ней создано огромное количество тарифных планов, позволяющих платить только за те параметры хостинга (трафик, место на жестком диске, MySQL, PHP, Perl…), которые используются в полном объеме.