Система CMS
Оглавление
Введение
Процесс создания сайта требует от разработчика определённого набора знаний в области программирования, проектирования дизайна, если цель – создание оригинального продукта со спектром оригинальных функций.
Несомненно, невозможно обойтись без услуг программиста, иначе придётся заниматься вопросом разработки самостоятельно. Однако, чаще всего, заказчику необходим именно стандартный набор функций, которые уже давно используются, автоматизированы и запрограммированы, собранны воедино в определённые программы.
Подобные программные средства называются CMS – системы управления контентом. Впервые такого рода продукты появились в 1995 году. На сегодняшний день CMS позволяют создать сайт любой конфигурации. Обзор CMS оставляет возможность спроектировать любого типа веб-сайт: от визитки до интернет-магазина.
Объект исследования работы – создание системы управления контентом существующего сайта.
Предмет исследования работы – технологии разработки Веб-приложений.
Система должна упростить работу с сайтом, конкретно его редактирование и внешний вид.
1. Обзор существующих систем управления контентом на рынке
Начнём с того, что такое CMS. CMS - от англ. "Content Management System" или "Система Управления Контентом". Интересно, что английское слово "контент" на русский уже обычно не переводится, хотя по смыслу это "содержимое", информационное наполнение сайта. Если расшифровать это понятие для обычного пользователя, то CMS - это некая программная оболочка, которая позволяет легко вводить и редактировать данные - текст, картинки и т. д., добавлять и удалять страницы, т. е., в общем, управлять сайтом в режиме онлайн, без знания html, языков программирования и прочих специальных навыков. CMS представляет собой также как бы комплекс наиболее распространённых скриптов - например, система комментариев, голосование, фотогалерея и т. д., которые, таким образом, не придётся искать и добавлять к сайту отдельно.
Поскольку создать сайт с помощью CMS можно быстро и без специальных навыков, этот инструмент становится всё более популярным. Сейчас даже сайты-визитки зачастую делают на CMS, хотя редактирование такого сайта в визуальном редакторе типа Macromedia Dreamveawer не представляет особых сложностей.
Каковы плюсы и минусы создания сайта при помощи CMS?
Плюсы:
1) Создание сайта при помощи CMS не требует никаких специальных знаний и навыков.
2) Сделать сайт на CMS можно быстро, что экономит время.
3) CMS несёт в себе достаточно большую функциональность, что позволяет не тратить лишнее время на поиск или написание отдельных скриптов.
4) Если вы выбираете популярную CMS, то к ней обычно можно найти большое число разнообразных шаблонов и дополнительных модулей, ещё больше расширяющих функциональность, а также получить советы по настройке, установке и решению тех или иных проблем от сообщества разработчиков и пользователей этой CMS.
Минусы:
1) На то, чтобы разобраться с каждой конкретной CMS, освоить работу с ней, всё равно требуется какое-то время.
2) Быстро создав сайт с помощью CMS, вы получите сайт, хоть и не выглядящий убого, но похожий на множество других.
3) Иногда функциональность CMS оказывается недостаточной, либо немножко не такой, как вам нужно, и тогда вам придётся долго ломать голову над решением, в общем-то, пустяковых проблем.
4) Для простых сайтов функциональность CMS, как правило, оказывается чрезмерной, отсюда - сайты на CMS работают медленнее, занимают больше места на хостинге, в большей мере подвержены сбоям.
5) У многих распространённых CMS, увы, до сих пор не редкость проблемы с безопасностью, из-за чего ваш сайт могут взломать хакеры.
Если вы всё же решили создать сайт при помощи CMS, то какую из них выбрать? Здесь я постараюсь дать обзор наиболее популярных CMS.
Здесь нужно заранее сказать, что различных CMS очень много. Поэтому дать достаточно полный обзор существующего множества CMS не представляется возможным. Здесь будут рассмотрены лишь некоторые наиболее популярные и часто встречающиеся в рунете.
Обратим внимание прежде всего на бесплатные CMS.
1.1 Вордпресс (wordpress)
Очень популярная в рунете и мире CMS, особенно среди новичков. Вордпресс позволяет создавать сайты различного типа, информационные, новостные и т. п., но всё же, когда говорят о Вордпресс, подразумевают, что это, в первую очередь, движок для блогов. В классе блогодвижков Вордпресс является безусловным лидером. Таким образом, если вы хотите легко и быстро создать свой блог, либо, что практически то же самое, несложный сайт информационного типа, на который будете периодически добавлять новые статьи и позволять пользователям их комментировать, то именно Вордпресс - неплохой выбор.
Вордпресс хорошо русифицирован, для него написано множество дополонительных модулей и сделано множество шаблонов. Конечно, вы и сами можете внести изменения в дизайн. Внешний вид сайта, сделанного на Вордпресс, представлен на рис.1.1
Рис.1.1 WordPress
Минусы Вордпресса типичны для популярных CMS - не слишком быстрая работа сайта, возможность сбоев при высокой посещаемости и периодическое обнаружение тех или иных дыр в скрипте. Поэтому некоторые пользователи даже при создании блогов отдают предпочтение всё же более простым и лёгким движкам. Также, очевидно, Вордпресс вряд ли подойдёт для сложного сайта с большой функциональностью, портала, интернет-магазина и т. п. - для них нужно обратить внимание на более универсальные CMS.
Вордпресс требует для работы php и MySQL. Скачать русскую версию Вордпресс, разные шаблоны к нему, а также получить консультацию по разным вопросам, связанным с Вордпресс, можно на сайтеmywordpress.ru
Как установить Вордпресс? Это сделать несложно, и обычно никаких проблем не возникает, но если если вы хотите всё же получить подробный ответ на этот вопрос, то его можно прочитать здесь. Кроме того, есть ещё более простой вариант - можно выбрать для сайта хостинг с предустановленным Вордпресс, в этом случае не нужно будет ни скачивать и затем заливать файлы на хостинг, ни редактировать настройки и т. п., всё очень быстро и в один клик будет установлено с сервера. Среди хостингов с предустановленным Вордпресс (и другими популярными CMS), например, хостинг AGAVA.ru илихостинг Jino.
1.2 Джумла (Joomla)
Ещё одна популярная CMS, на ней часто делают сайты. Несколько сложнее в освоении, чем Вордпресс, но имеет и большую сферу применения. Для Джумлы разработано огромное число модулей, включая форумы, чаты, блоги, интернет-магазины и т. д., поэтому на ней можно смело пытаться делать сложный многофункциональный сайт. Вообще, на Джумле можно делать самые различные сайты, как простые, так и сложные, это универсальная CMS. Также для Джумлы существует огромное число шаблонов, и в возможности создания или выбора дизайна для сайта вебмастер практически не ограничен. Внешнй вид контрольной панели Joomla представлен на рис.1.2
Рис.1.2 Joomla
Увы, так же, как и Вордпресс, Джумлу не обошли стороной проблемы с глюками, дырами и торможением сайта при большой посещаемости. Впрочем, это не мешает множеству поклонников Джумлы считать эту CMS лучшим выбором для своих сайтов.
В настоящее время существует две линейки Джумлы - более простая, но и более стабильная Джумла 1.0.x и более функциональная, переработанная Джумла 1.5.x.
Существуют несколько русских сборок Джумлы. Скачать разные версии Джумлы, шаблоны к ней и задать вопросы по этой CMS можно на сайте joomlaportal.ru
1.3 Друпал (Drupal)
Эта CMS подойдёт для создания форумов, блогов (в том числе многопользовательских), онлайн-энциклопедий, сайтов сообществ. Однако вряд ли данную систему можно назвать универсальной. Внешний вид системы Друпал изображен на рис.1.3
Рис.1.3 Drupal
Сравнивая Друпал с Джумлой и Вордпрессом можно однозначно сказать следующее - эта CMS не для тех, кто хочет создать сайт легко и быстро, установив и сразу же получив готовое. Drupal удобнее для тех, кто готов сидеть и тщательно выстраивать структуру сайта, чтобы получить то, что ему нужно, но не для привыкших к простым решениям новичков. Эта особенность отпугивает от Друпала тех, кто не хочет заморачиваться со всей этой сложностью, но привлекает тех, кто любит гибкость и любит поэкспериментировать.
Для Друпала есть шаблоны и модули, но по впечатлению их поменьше, чем для Джумлы, кроме того, по Друпалу меньше документации на русском языке. Скачать Друпал и задать вопросы по этой CMS можно на сайте drupal.ru
1.4 Другие бесплатные CMS
Как уже было сказано, различных CMS очень много, и приведённые выше наиболее популярны. Ещё о нескольких бесплатных CMS кратко:
php-nuke - одна из наиболее старых CMS, которая ранее была весьма популярной, но прославилась также и своей дырявостью и уязвимостью к взломам. Основное назначение - создание порталов, несложна в установке и управлении для новичков.
php-fusion - также cms для создания порталов, немало модулей и шаблонов, сравнительно несложна в установке.
e107 - универсальная cms для построения различных сайтов, много шаблонов и модулей. Однако некоторые пользователи указывают на наличие различных недоработок и тормознутость сайтов под её управлением.
mambo - эта cms предшественник дужмлы, и до сих пор неспешно развивается как отдельный проект. Попроще джумлы, но для кого-то это может быть и преимуществом.
typo3 - cms-монстр, на ней работают многие большие сайты, включая сайты известных корпораций и госучреждений, рассматривается многими как бесплатный конкурент сложных коммерческих cms. Велика по размеру и довольно сложна в освоении, но обилие возможностей может побудить в некоторых случаях сделать выбор в её пользу.
textpattern - по большей части применяется как движок для блогов, но, так же, как и вордпресс, может использоваться для создания несложных информационных сайтов. Если вордпресс вам чем-то не нравится, можно рассмотреть данную cms как альтернативу ему.
Рейтинг бесплатных CMS в рунете рис.1.4
Рис.1.4 рейтинг бесплатных CMS
1.5 Коммерческие CMS
В данном сегменте в рунете полностью доминируют отечественные разработки. Говоря об отличиях коммерческих CMS от бесплатных, можно отметить их универсальность (подавляющей части), но при этом наличие нескольких версий - от дешёвых и даже бесплатных и простых до более дорогих, включающих мощную функциональность и подходящих для создания практически любого сайта. Безусловным лидером здесь является CMS Битрикс (Bitrix), на нём работают очень много различных сайтов. Из всех русских коммерческих CMS она является наиболее мощной.
Среди конкурентов Битрикса можно отметить NetСat, ABO.CMS, Amiro.CMS, UMI.CMS, Host.CMS и др. Кроме этого значительное число веб-студий используют при создании сайтов самописные универсальные CMS собственной разработки. Отдельно можно отметить CMS Data Life Engine (DLE), которая преподносится разработчиками как движок для крупных новостных порталов.
Рейтинг платных CMS в рунете рис.1.5
Рис.1.5 Рейтинг платных CMS
1.6 Какую CMS выбрать?
Однозначно ответить на вопрос "Какая CMS лучше?" нельзя. Ответ зависит от разных причин, в первую очередь от тех целей и задач, которые вы ставите перед собой при создании сайта, требуемой функциональности, ну, и кроме этого, вашего желания и готовности бороться с трудностями в освоении конкретной CMS.
Если вы хотите установить сайт быстро и просто, то для большинства сайтов подойдут вордпресс или джумла. Вордпресс подойдёт для блога, несложного информационного сайта, джумла - для сайта-портала с различными дополнительными возможностями. Если ваши требования более специфичны и вы готовы потратить время на освоение CMS и на достаточно кропотливую разработку сайта, можно обратить внимание на другие CMS, соответствующие целям и задачам сайта.
Для ответственной задачи - создания коммерческого сайта, сложного высокопосещаемого проекта можно выбрать и коммерческую CMS, это будет более удобно и надёжно, хотя и сложный коммерческий сайт можно, если вы хотите сэкономить, сделать на джумле.
2. Анализ исходного кода сайта
Основная страница сайта index.php изображена на рис.2.1. В ней мы подключаем файл page.php – это единственный обязательный файл шаблона, который, в свою очередь, подключает любые другие части темы.
Header.php – отвечает за вызов служебных заголовков, динамически генерирует заголовок <title>, динамические meta-данные, запускает CKEditor и CSS-стили для подсветки синтаксиса;
Sidebar.php – отвечает за вывод бокового меню и его заполнением списками категорий;
Content.php – отвечает за вывод центральной части сайта, отображения списка статей, новостей, рубрик и отображения CKEditor в случае оформления статьи;
Листинг файлов можно посмотреть в приложении 1.
Рис.2.1 Главная страница сайта
Файл view.php отвечает конкретно за передачу данных из БД шаблону. Сначала смотрим, что запрошено. Если это просто ссылка “статьи ”, т. е. не указана категория, а указан только тип страницы, то получаем список всех статей. Если их много, то ограничиваемся максимальным количеством, которое указываем при установке системы. Далее, если задана конкретная статья (в ссылке есть id), объявляем функцию print_article ($cont), в зависимости от того, что мы хотим получить, подставляем свой параметр ("title", "content", "meta_key_words" или "meta_description"), на выходе возвращается значение этого параметра для заданной в ссылке статьи.
3. Обзор и выбор средств разработки
PHP (англ. PHP: Hypertext Preprocessor — «PHP: препроцессор гипертекста») — скриптовый язык программирования, созданный для генерации HTML-страниц на веб-сервере и работы с базами данных. В настоящее время поддерживается подавляющим большинством хостеров. Входит в LAMP — «стандартный» набор для создания веб-сайтов (Linux, Apache, MySQL, PHP (Python или Perl)).
В области программирования для Сети PHP — один из популярнейших скриптовых языков (наряду с JSP, Perl и языками, используемыми в ASP.NET) благодаря своей простоте, скорости выполнения, богатой функциональности и распространению исходных кодов на основе лицензии PHP. PHP отличается наличием ядра и подключаемых модулей, «расширений»: для работы с базами данных, сокетами, динамической графикой, криптографическими библиотеками, документами формата PDF и т. п. Любой желающий может разработать своё собственное расширение и подключить его. Существуют сотни расширений, однако в стандартную поставку входит лишь несколько десятков хорошо зарекомендовавших себя. Интерпретатор PHP подключается к веб-серверу либо через модуль, созданный специально для этого сервера (например, для Apache или IIS), либо в качестве CGI-приложения.
Кроме этого, он может использоваться для решения административных задач в операционных системах UNIX, GNU/Linux, Microsoft Windows, Mac OS X и AmigaOS. Однако в таком качестве он не получил распространение, отдавая пальму первенства Perl, Python и VBScript.
Синтаксис PHP подобен синтаксису языка Си. Некоторые элементы, такие как ассоциативные массивы и цикл foreach, заимствованы из Perl.
Ныне PHP используется сотнями тысяч разработчиков. Несколько миллионов сайтов сообщают о работе с PHP, что составляет более пятой доли доменов Интернета.
3.2 База данных
MySQL — это система управления реляционными базами данных. Работа с данными в базах осуществляется при помощи запросов, написанных на языке SQL (Structured Query Language) — структурированном языке запросов. MySQL обеспечивает удобный интерфейс к связанным данным и позволяет проводить с информацией операции, недоступные с обычными файлами, например поиск, сортировка, агрегирование. MySQL получил распространение в основном как быстрая, надежная база данных для web-ресурсов. Гостевые книги, форумы, интернет-магазины и многие другие задачи решаются с помощью MySQL. Распространяется под GNU General Public License или под собственной коммерческой лицензией. Помимо этого разработчики создают функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.
Перечислю основные приятные стороны пакета MySQL.
Многопоточность. Поддержка нескольких одновременных запросов.
Оптимизация связей с присоединением многих данных за один проход.
Записи фиксированной и переменной длины.
ODBC драйвер в комплекте с исходником
Гибкая система привилегий и паролей.
До 16 ключей в таблице. Каждый ключ может иметь до 15 полей.
Поддержка ключевых полей и специальных полей в операторе CREATE.
Поддержка чисел длинной от 1 до 4 байт (ints, float, double, fixed), строк переменной длины и меток времени.
Интерфейс с языками C и perl.
Основанная на потоках, быстрая система памяти.
Утилита проверки и ремонта таблицы ( isamchk).
Все данные хранятся в формате ISO8859_1.
Все операции работы со строками не обращают внимания на регистр символов в обрабатываемых строках.
Псевдонимы применимы как к таблицам, так и к отдельным колонкам в таблице.
Все поля имеют значение по умолчанию. INSERT можно использовать на любом подмножестве полей.
Легкость управления таблицей, включая добавление и удаление ключей и полей.
3.3 Веб-сервер
Apache HTTP-сервер — свободный веб-сервер.
Apache является кроссплатформенным ПО, поддерживает операционные системы Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS.
Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентиф
Система конфигурации Apache основана на текстовых конфигурационных файлах. Имеет три условных уровня конфигурации:
Конфигурация сервера (httpd.conf).
Конфигурация виртуального хоста (httpd.conf c версии 2.2 extra/httpd-vhosts.conf).
Конфигурация уровня директории (.htaccess).
Apache HTTP Server поддерживает модульность. Существует более 500 модулей, выполняющих различные функции. Модули могут быть, как включены в состав сервера в момент компиляции, так и загружены динамически, через директивы конфигурационного файла. В модулях реализуются такие вещи, как:
Поддержка языков программирования.
Добавление функционала.
Исправление ошибок или модификация основных функций.
Усиление безопасности.
Существует множество модулей, добавляющих к Apache поддержку различных языков программирования и систем разработки.
4. Разработка программного комплекса для управления контентом сайта
Основная задача дипломного проекта создание системы, которая упростит создание сайта в целом, БД для него, его редактирование, а так же внешнее оформление.
Задачи, решенные при создании системы:
– инсталлятор системы, с формированием БД;
– шаблон вывода контента из базы данных на страницу;
– панель для добавления этого самого контента;
– панель редактирования контента;
– поддержка рассылки новостей(RSS-канал);
– поддержка комментариев;
– шаблонизатор;
– сепаратор рубрик;
– присутствие капчи для неавторизованных пользователей;
– загрузка файлов на сервер;
– редактор пользователей;
– чпу для страниц, статей и компонентов;
– многоязычность;
4.1 Разработка основного алгоритма работы системы управления содержимым сайта
Схема работы CMS изображена на рис.4.1. Шаблон первичен, он является активной структурой, подключает необходимые программные компоненты по мере надобности, а те в свою очередь, извлекают нужную информацию из базы данных.
Рис.4.1 Схема работы CMS
Талицы БД в системе формируются в скрипте install.php, их структура представлена на рис.4.2
Рис.4.2 Таблица categories
Поле Category_id в в таблице категорий имеет флаги AUTO_INCREMENT и PRIMARY, уникальные идентификаторы используются для сортировки.
Описание основных элементов системы:
1. Модули
Для расширения базового функционала я добавил систему модулей, они являются мини-компонентами и используются основным шаблоном по его усмотрению.
Рис.4.3 Таблица Modules
Модули хранятся в базе данных в таблице modules (рис.4.3), подключаются они по средствам функции get_module_list:
function get_module_list() {
// Открываем каталог и выходим в случае ошибки.
chdir("mod");
$d = @opendir(".");
if (!$d) return;
while (($e=readdir($d)) !== false) {
// Игнорируем элементы .. и .
if ($e=='.' || $e=='..') continue;
// Нам нужны только подкаталоги.
if (!@is_dir($e)) continue;
$mod[] = $e;
flush();
}
closedir($d);
chdir("..");
return $mod;
}
И в index.php это выглядит так:
$mod = get_module_list();
foreach ($mod as $module) {
$path = 'mod/'.$module.'/view.php';
if (file_exists($path)) require_once ($path);
}
Таким образом мы подключили программную основу, функции и обработчики.
2. Сепаратор рубрик
Для создания системы новостей на сайте требуются отдельная таблица в БД, отдельный редактор и отдельные функции. В моем случае уже все есть в системе статей. Осталось создать отдельную рубрику для новостей и выводить ее где надо и когда надо. Сначало добавляем в таблицу рубрик (categories) новое поле type. По умолчанию все категории имеют тип <> - пустая строка. Далее пишем модуль separator, который будем обрабатывать типизированные категории и затем их сепарировать по признаку type:
<?php
* $cat_id - идентификатор категории;
* $start - столько статей пропустить;
* $stop - столько взять.
* * * * * */
$mod_separator = true; //модуль подключен
### Функция возвращает список записей
### определенной категории.
function separator_list ($cat_id, $start, $stop){
$result = mysql_query('
SELECT *, UNIX_TIMESTAMP(stamp) AS stamp
FROM '.PREFIX.'article
WHERE category_id = "'.intval($cat_id).'" AND approve=1
ORDER BY stamp DESC LIMIT '.$start.', '.$stop.'
') or die(mysql_error());
for ($db=array(); $row2=mysql_fetch_assoc($
return $db;
}
### Функцмя возвращает список
### уникальных идентификаторов (category_id)
### категорий определенного типа.
function separator_type ($type){
$result = mysql_query('
SELECT category_id FROM '.PREFIX.'categories
WHERE type = "'.$type.'"
ORDER BY category_id
') or die(mysql_error());
for ($db=array(); $row2=mysql_fetch_assoc($
return $db;
}
?>
3. Система комментариев
Структура таблицы comment выглядит следующим образом (рис.4.4):
Рис.4.4 Таблица comment
К определенной статье мы привязываемся по средствам ее идентификатора (поле article_id). Сам модуль:
<?php
if (
(isset($_REQUEST['new_comment'
(isset($_SESSION['login'])) &&
($_REQUEST['my_comment'] !== '') &&
($_REQUEST['sid'] == $_SESSION['sid'])
)
{
$_REQUEST['my_comment'] = mysql_escape_string(
$sql = mysql_query('INSERT into te_comment (article_id, author_id, author, content, date)
values (
"'.$_REQUEST['id'].'",
"'.$_SESSION['author_id'].'",
"'.$_SESSION['name'].'",
"'.$_REQUEST['my_comment'].'",
"'.date("d.m.Y H:i").'"
);
')or die(mysql_error());
$_REQUEST['my_comment'] = '';
}
//функция формирует список комментариев для данной статьи
function get_comments (){
$result = mysql_query('
SELECT * FROM te_comment WHERE article_id = "'.intval($_REQUEST['id']).'"
ORDER BY id
') or die(mysql_error());
for ($db=array(); $row2=mysql_fetch_assoc($
return $db;
}
?>
Функция get_comments() использ
4. Загрузка файлов на сервер
Для решения этого вопроса требуется multipart-форма в Шаблоне и функция-обработчика этой формы:
<?php
function upload_file($max_size=3145728) {
if ($_FILES)
{
switch ($_FILES['filename']['type'])
{
case 'image/jpeg': $ext='jpg'; break;
case 'image/pjpeg': $ext='jpg'; break;
case 'image/png': $ext='png'; break;
default: $ext='';
}
if ($ext == true && $_FILES['filename']['size'] < $max_size)
{
$file=time().'.'.$ext;
$m=move_uploaded_file ($_FILES['filename']['tmp_
if ($m) $mes='Файл загружен.';
else $mes='Ошибка. Возможно не хватает прав доступа.';
}
else $mes='Ошибка. Тип файла не поддерживается или его размер больше допустимого.';
}
return $mes;
}
?>
У функции upload_file() всего один необязательный параметр – максимальный размер загружаемого файла в байтах. Функция возвращает сообщение об успешности выполнения загрузки. Глобальный массив $_FILES содержит информацию о загружаемых файлах, далее проверяем тип файла.

- Система GPS. Принцип построения и технические возможности
- Система автоматизации распараллеливания гибридный анализ
- Система автоматизации распараллеливания отображения на мультипроцессор
- Система автоматизированного анализа пространственной структуры изображений Подсистема линейной сегментации
- Система автоматического контроля дорожного движения
- Система адаптации персонала в ООО «Юран Трейд»
- Система административных наказаний
- Синтаксис эмоциональных высказываний на материале немецкой диалогической речи
- Синтаксические и лексические особенности современной французской разговорной речи
- Синтез и исследование функциональных свойств комплексных полифункциональных присадок
- Синтез и исследование функциональных свойств комплексных полифункциональных присадок
- Синтез тетрацианоэтилена
- Синтетический и аналитический учет основных средств и их амортизация
- Синхронный перевод