Система управления сайтом EasyCMS
EasyCMS – это не только легкая и простая система управления контентом сайта, но также и имиджевая CMS в которой сочетаются легкость адаптации к любым новым задачам, возможность интеграции с любым, даже самым сложным дизайн-шаблоном, а также поддержка всех новых технологий. Функциональное ядро выполнено на PHP, с AJAX-виджетами и jQuery скриптами. Администрирование встроено в пользовательскую часть сайта, так что результат редактирования виден сразу, без дополнительных переходов по страницам. Управление сайтом понятно интуитивно и не требует предварительного обучения.
За счет минимизации запросов к базе данных MySQL, а также отсутствию «лишних» модулей (в каждом разделе сайта подгружается только то, что необходимо именно для этого раздела) сайт на EasyCMS работает очень быстро.
Почувствуй легкость вэб-сайта с EasyCMS!
Также я стараюсь вести историю критических обновлений EasyCMS, по которым можно проследить развитие этой системы управления контентом.
Почему EasyCMS?
Первый вопрос, который возникает у каждого вэб-мастера: а зачем еще одна CMS? Ведь разобраться в коде может только сам автор, никаких стандартов, да и вообще, чего изобретать велосипед, когда есть такие глобальные, а к тому же и бесплатные, системы как WordPress, Joomla, OpenCart и т.д.?
Ну, тут можно привести много причин.
Во-первых, любой уважающий себя вэб-мастер должен уметь сам написать любой сложности систему управления контентом, даже если это всего лишь одноразовый проект. А уж если получилось сделать из этой системы что-то, пригодное для дальнейшего использования и легко настраиваемое, так тогда ей и цены нет. Кстати, я начала писать эту систему в рамках учебного проекта, а потом по мере работы она выродилась в совершенно самостоятельный продукт, вполне готовый к употреблению. Хотя конечно от первоначальной системы остался только принцип организации безопасности данных.
Во-вторых, все готовые CMS рассчитаны на модульную структуру сайта, т.е. для шаблонного дизайна они подходят прекрасно, а вот чтобы «прикрутить» их к нестандартному дизайну надо будет сильно помучаться. И не факт что получится совсем так, как хотелось бы. Кстати, именно поэтому я всегда начинаю сайт с верстки, EasyCMS вставляется уже поверх шаблона, просто и быстро (примерно требуется 2 часа, если не надо писать каких-то дополнительных модулей). Но тут ведь как: с каждым новым сайтом арсенал системы расширяется, а дальше только бери готовые кусочки да пользуйся, благо все на функциях. Стандарты кроссбраузерной верстки вообще требуют особого разговора.
В-третьих, хотя может и во-первых, – скорость работы. Готовые CMS рассчитаны на то, чтобы «объять необъятное», т.е. учесть максимум возможных вариантов, что, конечно, сказывается на скорости их работы. Даже при всех отключенных дополнительных модулях, блог на WordPress работает раза в два, а то и в три медленнее, чем самодельный!
Конечно, можно много рассуждать о том, что под готовые системы написано так много удобных модулей и виджетов, только бери и пользуйся. Но, опять-таки, если ты сам не знаешь, как такое написать, то лучше и не браться за настройку готового кода, выйдет только хуже.
В общем, резюмируя все выше сказанное, можно отметить:
EasyCMS – это быстрая многофункциональная система управления контентом сайта, рассчитанная на настройку продвинутым вэбмастером и пользование любым администратором со знанием Word. Все данные хранятся в БД, есть возможность настройки многоязыкового интерфейса, т.к. все текстовые константы вынесены в отдельный файл словаря.
Структура EasyCMS.
Система представляет собой матрешку из вложенных блоков, родительским является INDEX, который содержит всю структуру и подключаемые модули. Все они расположены в отдельных файлах, чтобы быстро иметь доступ к нужному фрагменту кода.
Модуль «Константы» содержит все необходимые рабочие константы для подключения к БД.
Модуль «Словарь» содержит массивы с текстовыми константами на разных языках (если требуется).
Модуль «Функции» – это ядро системы. Здесь выполняются все запросы в базу данных, и определяется, что будет выведено на страницу. Файл компилируется до обработки заголовков страницы, поэтому все содержимое выводится сразу. Кстати, функции, отвечающие за работу административной части сайта, хранятся отдельно, чтобы не загружать пользовательскую часть.
Модуль «Header» содержит мета-тэги, подключение таблиц стилей, Java-скриптов и прочую настроечную информацию.
Следующая вложенная матрешка – это блок , т.е. основное содержимое страницы.
Модуль «Шапка сайта», как следует из названия, содержит чаще всего логотип и другую информацию, которая обычно присутствует в реквизитах компании.
Модуль «Меню», может быть как горизонтальным, так и вертикальным. Чаще всего используется дополнительное выпадающее меню, для облегчения доступа к страницам второго уровня. Меню организовано по принципу дерева, т.е. выводит структуру страниц из БД от родителя к потомку. Это же дерево используется и на странице «Карта сайта», которая генерируется также автоматически.
Модуль «БЛОК» левый и правый – это не обязательные части сайта. Могут быть заменены вертикальным меню, или содержать какую-то дополнительную информацию: блок новостей, поиск по сайту, баннеры и т.д.
Блок «КОНТЕНТ» является основным содержимым страницы. Он содержит блоки «Навигация», «Заголовок H1» и, собственно, текст.
Модуль «Footer» или «Подвал сайта» содержит всю второстепенную информацию: копирайты, счетчики и т.д. Здесь же обычно располагаются кнопки «хорошего тона вэбмастера» – «Домой», «Написать вэбмастеру» и «Карта сайта». Ну и конечно кнопка входа в административную часть сайта.
Функционал EasyCMS.
За то, как сейчас организована функциональная часть сайта, хочется сказать отдельное спасибо Антону Степанову, моему другу и коллеге, который, собственно, и переписал все модули на функции, ну и конечно внес много нового. Кстати, именно благодаря ему я по-новому взглянула на работу с массивами.
Функционал системы состоит из пользовательской и административной части.
Пользовательская часть:
- Модуль «Контент». Загружает содержимое страницы – это простой текстовый вывод информации из БД по заданному адресу страницы.
-Модуль «Меню». Выводит меню по заданным параметрам в виде древовидной структуры с заданным числом уровней. Второй уровень вложенности и ниже выводятся в виде выпадающего меню.
- Модуль «Галерея». Работает на jQuery и позволяет подключить любую библиотеку галереи, которая подходит к дизайну сайта, будь то карусель, слайдер или самая обычная галерея. Причем различные галереи можно подгружать в зависимости от раздела сайта (например, на сайте easyDRaw.ru в разделе «Web-дизайн» галерея отличается от остальных разделов). Галереи могут быть установлены не только в контентной части страницы, но и в любой другой, например, в шапке сайта или в блоках справа и слева.
- Модуль «Новости». Стандартный новостной модуль, который позволяет выводить несколько последних новостей на главную страницу. А также создает список всех новостей, разбитых по заданному количеству статей (например, по 10 на странице).
-Модуль «Блог». Полноценный блог со всеми необходимыми функциями: вывод записей по релевантности, разбиение по страницам по заданному количеству записей, вывод последних записей в блок справа, сортировка и вывод по меткам, виджет «Мне нравится», возможность скрытия части контента записи в общем выводе, поиск по содержимому, комментарии.
-Модуль «Карта сайта». Генерируется автоматически и выводится в виде дерева (пример).
-Модуль «Обратная связь». Форма обратной связи для сайта, может быть использована в качестве формы заказа с привязкой к каталогу. Содержит «каптчу» и валидацию данных.
-Модуль «Гостевая книга». Стандартная гостевая книга с минимально необходимым числом опций.
Административная часть:
-Модуль «Добавить». Добавляет новую страницу в базу данных. При этом файл sitemap.xml обновляется автоматически.
-Модуль «Редактировать». Редактирует текущую страницу. При этом файл sitemap.xml обновляется автоматически.
Форма «Редактировать страницу» по своей структуре идентична форме «Добавить страницу», поэтому я подробно опишу только одну из них.
Поле «Заголовок (H1)» содержит информацию, которая выводится в тэг H1. Это поле очень важно для продвижения страницы в поисковиках, поэтому должно максимально отражать суть содержимого.
Поле «Язык» (необязательное) позволяет выбрать язык страницы (в моем примере языка два – русский и английский, но вообще их количество не ограничено).
Поле «Раздел» показывает место страницы в структуре сайта. Самый верхний уровень [0] – это пункт «Раздел», все остальные разделы вложены в нее. Разделы генерируются автоматически из базы и выводятся в виде иерархии.
Следующее поле «Позиция» нужно для упорядочивания страниц в разделе.
Поле «Адрес» – это фактический адрес, URL страницы. Заполняется только латиницей, без пробелов и специальных символов. Расширение страницы (HTML) указывать не нужно. Хорошим тоном считается, если адрес является транслитерацией поля «Title». Лучше всего пользоваться таблицей транслитерации, которую поддерживает Яндекс. А вообще есть много онлайн-сервисов специально для этого.
Поле «Статус» позволяет опубликовать или скрыть страницу, если, например, она находится на стадии написания, но по каким-то причинам показывать ее еще рано. Также это альтернатива удалению страницы, потому что при смене статуса на «Не опубликовано» статья останется в базе данных, чтобы потом к ней можно было вернуться в любой момент. Для пользователей и поисковых систем она не будет видна.
Поле «Содержание» и есть сам контент страницы. Редактируется с помощью визуального редактора TinyMCE, есть возможность редактирования кода HTML.
Поля «title», «description» и «keywords» – это специальные поля для продвижения страницы. Поле «title» выводится в заголовке браузера, а поля «description» и «keywords» - в мета-тэгах в заголовке странице. Заполнение этих полей – целая наука, которой занимаются SEO-оптимизаторы, так что если не знаете, что писать, лучше оставить их пустыми.
В принципе, поля «Заголовок (H1)» и «Title» могут быть идентичны по содержимому, но лучше, когда они повторяют друг друга не полностью. В EasyCMS есть возможность выбора, какое из этих полей выводить в названиях меню (по умолчанию, это поле «Title»). Яндекс также приводит рекомендацию, чтобы «текст в тэге для ключевых страниц совпадал с ее названием (с заголовком страницы, выделенным, например, тегом H1 и с текстами ссылок, указывающих на эту страницу». Подробнее об этом можно почитать в статье «Быстрые ссылки».
- Модуль «Удалить». Удаляет текущую страницу из базы без возможности восстановления. Если надо просто скрыть страницу, не удаляя ее, то в модуле «Редактирование» надо поменять поле «Статус» на «Не опубликовано». Страница не будет видна пользователю, а также будет убрана из «Карты сайта» и файла sitemap.xml.
-Модуль «Список страниц». Выводит полный список страниц из БД, даже тех, чей статус помечен как «Не опубликовано». Список выполнен в виде дерева, чтобы отобразить вложенность разделов.
- Модуль «Загрузить». Позволяет загрузить на сайт файлы заданных разрешений (например, только изображения, PDF и документы MS Office). Также можно поставить ограничение на размер загружаемых файлов. На этой же странице выводятся все загруженные на сайт файлы с указанием их расширения и пути до них.
- Модуль «Загрузка фото» грузит изображение на текущую страницу в галерею. К нему применимы все те же параметры, что и к модулю «Загрузить».
По щелчку на фото в галерее открывается форма «Редактировать изображение».
Поле «Галерея» - это URL-адрес страницы (без расширения), но которой она размещена. Таких страниц может быть несколько, они пишутся через запятую.
Поле «Статус» позволяет скрыть те изображения, которые по каким-то причинам удалять не нужно, но и показывать на странице тоже не нужно.
Поле «Иконка» нужно для загрузки маленького изображения (100х100 пикселей, например) в галерею, для того чтобы страница грузилась быстрее.
Поле «Ссылка» заполняется, если изображение надо связать с какой-либо страницей.
Назначение остальных полей понятно из названия. В данном примере сделаны два поле «Название» (для русской и английской версии сайта), а также два поля «Аннотация». Думаю, дополнительные пояснения здесь не треюбуются.
- Модуль «Sitemap». Автоматически генерирует файл sitemap.xml в корне сайта при любом обновлении БД. О том, как создать такую функцию я уже писала раньше в блоге в статье «Cоздаем карту сайта sitemap.xml "на лету"».
Отдельные модули отвечают за редактирование и добавление новостей, записей в блоге и т.д. Принцип действия и формы редактирования там аналогичные.
Безопасность EasyCMS.
В стандартном виде система безопасности EasyCMS рассчитана на одного или нескольких пользователей и организована с помощью .htaccess.
Если же требуется многопользовательская система с разграничением прав доступа (пользователь, администратор и т.д.), то за это отвечают отдельные дополнительные модули, которые обеспечивают многоступенчатую защиту с шифрованием пароля по алгоритму MD5(password+salt).