Существует множество уже готовых к употреблению продуктов, среди них, как платный и широко рекламируемый Битрикс, так и Mamba Server с открытым кодом.
В этой статье я расскажу об особенностях внедрения другого, на мой взгляд, достаточно хорошего, продукта - Exponent CMS Server. Целью этого документа является поверхностное ознакомление читателя с этим продуктом. Детальное описание всех функций доступно на сайте разработчика:
http://www.exponentcms.org
Краткое описание
Как и Mamba Server, Exponent CMS Server является проектом с открытым кодом. Дистрибьютивы доступны как под Х, так и под Win32 системы.
Последняя доступная версия - 0.96.5.
Разработчик заявляет, что продукт может работать как под управлением Apache, так и под управлением IIS.
Сервер работает в связке IIS (Apache) + PHP + MySQL. К сожалению связка IIS + PHP 5 (PHP 4) + MySQL 5 (MySQL 4) так и не захотела работать, поэтому пришлось использовать пакет «все в одном» xampp, который инсталлирует тот же php5 и MySQL 5, но в связке с Apache.
Xampp можно заполучить вот тут, а для работы Exponent вполне достаточно php и MySQL. Остальные компоненты инсталлировать необязательно.
Инсталляция Exponent CMS
Инсталляция Exponent проходит быстро и достаточно безболезненно (опять-таки, в случае с IIS, Exponent упорно не желал устанавливать соединение с базой данных).
В папку htdocs (если xampp инсталлировался по-умолчанию) копируйте разархивированный дистрибьютив, после этого, используя phpMyAdmin, создаете базу для Exponent, а также пользователя, который имеет право полного доступа к этой базе. После всех этих операций необходимо отправиться по ссылке http://yourserver/exponent_installation_folder/ и пройти небольшой мастер установки.
На этом этапе будет установлено соединение с созданной вами базой данных, создан логин и пароль администратора.
Жмите на Set Language
Т.к. инсталляция новая, то жмите на New Installation
Мастер установки проверяет, соответствуют ли установленные компоненты требованиям. Жмите на Configure Database Settings
Введите параметры соединения с базой MySQL (базу необходимо создать заранее), укажите, инсталлировать ли примеры (лучше инсталлировать), после чего жмите Test Settings.

Итак, соединение с базой установлено, таблицы занесены в базу, следующим шагом будет создание учетной записи администратора. Жмите на Create an Administrator
Введите всю необходимую информацию (адрес электронной почты необходим для восстановления пароля), жмите на Continue
Порадуйтесь удачному завершению и нажмите на Go to Website
По завершении всех настроек вам будет предоставлена страница, с темой по-умолчанию, основного сайта. Введите логин и пароль администратора, и вы попадете в «админку». Если вы не устанавливали примеры, то единственной доступной вам опцией будет консоль администратора.
Консоль администратора позволяет создавать новых пользователей, группы, настраивать подключение к серверу баз данных, менять темы, включать, отключать, загружать дополнительные модули и т.д. Полезная вещь, в общем.
Схема работы Exponent CMS и создание собственных тем
Exponent работает, основываясь на четком разделении дизайна и данных. Данные хранятся в базе данных, дизайн же основывается на темах. Примеры тем расположены в exponent hemes. Основными файлами является index.php, style.css и class.php, которые и задают структуру страницы и цветовую схему сайта.
Для того чтобы не заморачиваться с созданием структуры темы заново, рекомендую просто скопировать готовую тему и переименовать папку.
После этого, откройте скопированную папку и начните редактировать файл class.php. Этот файл ответственен за доступность созданной темы Exponent-у.
<?php
##################################################
#
# Copyright (c) 2004-2006 OIC Group, Inc.
# Written and Designed by James Hunt
#
# This file is part of Exponent
#
# Exponent is free software; you can redistribute
# it and/or modify it under the terms of the GNU
# General Public License as published by the Free
# Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# GPL: http://www.gnu.org/licenses/gpl.txt
#
##################################################
if (class_exists('thundertheme')) return;
class thundertheme {
function name() { return "Thunder theme"; }
function author() { return "Igors Belijs"; }
function description() { return "Clean theme for ecology site"; }
}
?>
Смените выделенные значения на необходимые вам.
Далее принимайтесь за создание php макета. Для создания вам необходим уже готовый html макет, который вы и будем преобразовывать в php.
Во внимание следует принимать то, что все, что создано в index.php - является статичным, соответственно не имеет возможности быть измененным в администраторском интерфейсе. Еще один момент: если вы не используете css, то самое время начинать это делать.
Названия файлов:
Index.php - файл шаблона
Style.css - файл стилей (можно указать другой в index.php)
Итак, открывайте с помощью любимого редактора ваш index.html и начинайте править.
Что вы имеете в начале:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table height="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="50%" rowspan="6" class="side"> </td>
<td colspan="2"><img src="images/750_crop_4.jpg" width="750" height="180"></td>
<td width="50%" rowspan="6" class="side"> </td>
</tr>
<tr>
<td colspan="2" class="menu">Welcome About us Contact Information Guestbook</td>
</tr>
<tr>
<td colspan="2" class="signature">Line goes here Line goes here Line goes here Line goes here Line
goes here Line goes here Line goes here Line goes here </td>
</tr>
<tr>
<td width="182" class="categories"><p>Everyone wants to understand art</p>
<p>My critics are men</p>
<p>Categories go here </p>
<p>The excess of what we have seen</p></td>
<td width="575" class="table"><p>Art is notoriously hard to talk about. It seems, even when made of
words in the literary arts, all the more so when made of pigment, sound, stone or
whatever in the non-literary ones,
to exist in a world of its own, beyond the reach of discourse. It not only is hard to talk about it;
it seems unnecessary to do so. It speaks, as we say, for itself: a poem must not mean but be; if you have
to ask what jazz is you are never going to get to know.
<p>Artists feel this especially. Most of them regard what is written and said
about their work, or work they admire as at best
beside the point, at worst a distraction from it. "Everyone wants to understand art,"
Picasso wrote, "why not try to understand the song of a bird? . . .
People who try to explain pictures are usually barking up the wrong tree
</td>
</tr>
<tr>
<td colspan="2" class="signature">Signature goes here Signature goes here
Signature goes here Signature goes here
Signature goes here Signature goes here </td>
</tr>
<tr>
<td colspan="2" class="table"> </td>
</tr>
</table>
</body>
</html>
В графическом исполнении это выглядит вот так:
Теперь надо избавиться от всего ненужного, чтобы получить полностью динамичный контент. Необходимо оставить только структуру. После этого добавляем в код странички php модули. В результате вы имеете следующее:
<?php
##################################################
#
# Copyright (c) 2004-2006 OIC Group, Inc.
# Written and Designed by James Hunt
#
# This file is part of Exponent
#
# Exponent is free software; you can redistribute
# it and/or modify it under the terms of the GNU
# General Public License as published by the Free
# Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# GPL: http://www.gnu.org/licenses/gpl.txt
#
##################################################
if (!defined('EXPONENT')) exit('');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<?php echo exponent_theme_headerInfo($section); ?>
<link rel="stylesheet" title="default" href="<?php echo THEME_RELATIVE; ?>style.css" />
</head>
<body onLoad="exponentJSinitialize();" topmargin="0" leftmargin="0" bottommargin="0" rightmargin="0">
<?php exponent_theme_sourceSelectorInfo(); ?>
<table height="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="50%" rowspan="6"> </td>
<td height="180" colspan="2" valign="top"> <img src="<?php echo THEME_RELATIVE;?>
images/750_crop_4.jpg" width="750" height="180"> </td>
<td width="50%" rowspan="6" valign="top"> </td>
</tr>
<tr>
<td colspan="2" valign="top"> <?php exponent_theme_showModule("navigationmodule","Top Nav"); ? > </td>
</tr>
<tr>
<td colspan="2" valign="top"> </td>
</tr>
<tr>
<td width="182" valign="top">
<?php
exponent_theme_showModule("previewmodule","Default");
exponent_theme_showModule("navigationmodule","Children Only");
exponent_theme_showSectionalModule("containermodule","Narrow","","@sidebar");
?> </td>
<td width="575" valign="top"> <?php exponent_theme_main(); ?> </td>
</tr>
<tr>
<td colspan="2" valign="top"> <?php exponent_theme_showModule("textmodule","Wide","","copyright"); ?> </td>
</tr>
<tr>
<td colspan="2" valign="top"> </td>
</tr>
</table>
</body>
</html>
Так это выглядит после чистки. Видны участки, в которые вы вставили статичные модули, чтобы пользователь не мог их изменить.
Следующим в очереди идет style.css.
На первых порах рекомендую использовать уже созданный Exponent-ом css и модифицировать нужные вам значения. Таким образом, вы сэкономите время на создание полноценного файла, который будет работать одинаково хорошо, как в режиме посетителя, так и в режиме администратора.
Пример css файла приводить не буду, т.к. это займет излишний объем.
Итак, что должно получиться по завершении всех этих операций:
Class.php - файл, использующийся exponent-ом для распознания темы.
Index.php - шаблон.
Style.css - набор стилей для созданной темы.
Графику рекомендую складывать в папку images.
Добавление модулей, настройка навигации
Теперь вы можете заходить в интерфейс администратора (http://yourserver/exponent_installation_folder/login.php) и начинать править внешний вид вашего сайта.
Консоль администратора:
Все достаточно наглядно:
Управление пользователями и группами - позволяет создавать, редактировать и удалять созданные группы и пользователей.
Управление модулями и темами - позволяет включать и выключать встроенные модули Exponent-a, добавлять новые, а также просматривать существующие темы и загружать дополнительные.
Управление базой данных - позволяет провести архивацию и восстановление данных.
Изменение настроек сайта - позволяет сменить используемую базу данных (данные при этом не переносятся), позволяет изменить используемую тему сайта, разрешить или запретить регистрацию новых пользователей, настройку прав доступа, настройки smtp сервера и т.д
На данном этапе рассмотрим смену темы.
Стандартной темой Exponent является Portal
Для того, чтобы ее изменить, отправляйтесь в Staff Only - Hidden Section (буду считать, что вы инсталлировали примеры) - Configure Site - Edit - Display Settings - Theme - Смените тему на созданную вами - жмем Save.
Если темы нет в списке, проверьте, правильно ли вы отредактировали файл class.php, расположена ли папка с темой в yourwebsite hemes, находится ли в той же папке файл manifest.php
Теперь, когда тема благополучно применена, можно начинать наполнять сайт.
Начните с включения нужных модулей и отключения ненужных.
Для этого идите в Site Administration - Manage Modules.
Для начала советую включить:
Login Module (позже вы его отключите)
Image Manager
Navigator
News module
Preview Link
Search module
Text module
Модули можно сделать как статичными, в таком случае они будут видны всем посетителям ресурса, так и управлять ими при помощи настроек доступа (например модуль Configure Site должен быть доступен только разработчику сайта).
Чтобы сделать модуль статичным, достаточно включить его в index.php (смотрите в начало статьи пример кода).
Для того, чтобы модулем можно было управлять, вы должны его:
- Активизировать
- Добавить в соответствующий контейнер (в index.php должен присутствовать следующий фрагмент <?php exponent_theme_main(); ?>
- После этого нажать на кнопку
, находящуюся под контейнером.
- Откроется страничка, на которой вы сможете выбрать один из активизированных модулей:

Модуль может иметь несколько предустановленных состояний. В данном случае Login module имеет три положения. Какое из них вас устраивает - решайте сами. Порой
бывает достаточно только ссылки Logout.
Добавление дополнительных страниц в навигации, при условии, что этот модуль включен (либо статично, в файле index.php <?php exponent_theme_showModule("navigationmodule","Top Nav"); ?, либо путем активации модуля и добавления его в контейнер) происходит простейшим нажатием ссылки [manage]
После чего откроется страничка, где происходит управление навигацией.
Итак, вы создали необходимые разделы, структура одобрена, можно начинать ограничивать права «вебмастерам», которые будут управлять содержанием сайта.
Управление правами доступа
Если вы не хотите, чтобы пользователь мог добавить модуль, скажем, разместить на заглавной странице сайта список контактов на радость, спамерам и фишерам, то этот модуль можно (и нужно) отключить. Это не уберет модуль со страниц, где он существует, но сделает его добавление недоступным в другие страницы.
Страницы, которые используются для управления сайтом, например страница администратора, можно спрятать, убрав в свойствах этой страницы галочку Public.
Теперь, когда все лишнее отключено и спрятано, можно приступать к созданию пользователей и групп.
Для примера, вы хотите, чтобы все новые пользователи, по умолчанию могли только добавлять записи в раздел новостей.
Для этого:
- Создайте группу, и обозначьте ее как Default
- Создайте нового пользователя
Когда пользователь создан, он имеет те же права доступа, что и анонимный посетитель, за исключением ссылки Logout (или тот вид, который вы настроили модулю логин).
- В интерфейсе администратора, откройте раздел новостей и в News Module нажмите на кнопку
. На открывшейся странице вы сможете указать, какие права доступа имеет созданная вами группа. Все достаточно просто. Когда закончите, нажмите на кнопку Save Permissions. Теперь все новые пользователи имеют доступ к модифицированию раздела новостей.
Таким образом, вы можете настроить любой уровень доступа для любого пользователя и делегировать управление разделами.
Что вы, собственно, и собирались сделать, когда начали рассматривать возможность введения системы управления содержанием.
Заключение
Ребята из Exponent CMS проделали замечательную и огромную работу. Выпущенный ими продукт хоть и имеет свои недоделки (возможность запуска нескольких сайтов из одного корня присутствует, и зовется MultisiteManager, но мне так и не покорилась).
Но все эти мелкие огрехи с лихвой компенсируются простотой, функциональностью и удобством использования и настройки Exponent.
Иными словами - отличный продукт! Рекомендую начинающему веб-разработчику и неначинающему системному администратору, у которого есть дела поважнее, нежели ежечасно править домашнюю страничку компании.
Список ресурсов, использованных при написании этой статьи
Перейти к рубрике --> WEB-мастерская |