Разработка движка Ivacms
Данная Cms разрабатывалась ещё с 2004 года исключительно для своих проектов в интернете, но в далёком 2007 году, я удачно внедрял её для клиентских сайтов. К сожалению многие сайты закрылись (более 100), хотя на тот момент они прекрасно работали, и давали трафик. Компания в которой я работал давным давно закрылась, и вместе с ней «ушли» все разработанные сайты. Сайты-визитки, интернет магазины,доски объявлений, каталоги ссылок, и другие проекты на различных CMS (Joomla, Shop-script, и своя естественно).
Мне всегда было интересно из чего состоит, и как работает любая CMS, это так же был один из ключевых моментов для разработки собственного движка.
На сегодняшний день я пользуюсь IVACMS очень редко, и исключительно для своих сайтов, а для клиентских проектов она совсем не подойдёт, если только для сайтов-визиток.
Почему?
- Во-первых очень много нужно править ручным способом
- Нет возможности визуально править шаблон сайта, как например это сделано в других CMS
- По прежнему есть HTML код внутри функций
- Наверняка есть баги о которых я не знаю 🙂
- Есть баги о которых я знаю, но они никак не влияют на работу сайта 🙂
- Нет возможности допилить какой-нибудь модуль с помощью плагина, как это сделано в Joomle или WordPress, только руками
Плюсы
- Собственная разработка это всегда плюс для разработчика, во всяком случае для меня.
- Нет лишнего в коде, не подгружаются лишние css стили и js скрипты. Сайты работают без jquery и дополнительных шрифтов
- Быстрота работы. Были сайты с посещаемостью 50-60к в сутки, полёт нормальный
- Как мне раньше казалось, поисковые системы лучше относятся к самописным движкам, нежили к Joomla и WordPress
- Каждый модуль состоит из отдельных таблиц в БД, что существенно снижает нагрузку на Mysql. Например в WordPress все данные хранятся в одной таблице wp_posts
Архитектура
У меня всё довольно просто, есть папка с компонентом (модулем), состоящая из нескольких файлов(админка,fronted,а так же шаблон). Это не MVC, как например в движке Opencart, всё намного проще, и удобней с точки зрения разработки.
ООП
Больше 15 лет назад я не знал, что такое ООП, поэтому CMS разрабатывалась на простых функциях, с HTML шаблонами внутри этих функций. Уже потом я начал переделывать каркас, а так же модуль с обычных функций на классы.
Как оказалось использование классов значительно удобней, во всяком случае можно избежать ошибку «cannot redeclare function», которая может встречаться при использование одинаковых функций в разных модулях или компонентах.
Это конечно же не единственный плюс использования классов, есть программисты которые по прежнему разрабатывают плагины на одних функциях, но это их личное дело, я же к этому отношусь вполне адекватно, и не призываю использования ООП. Каждому своё.
Редактор страниц
Для визуального редактирования текста (контента) я решил использовать плагин «FCKEditor»
Модули
Модулей в системе довольно много, но для разработки я решил остановиться лишь на каталоге, статичных страницах, галерея, и контакты.
Раньше использовал модуль баннеры, чтобы смотреть статистику переходов (страны, время,БОТЫ, и т.д), исключительно для собственного интереса, а так же управление рекламой на больших проектах. Таких проектов больше нет 🙂
Так же я использовал свой модуль статистики, так как Liveinternet вызывал подозрение с кол-вом посещений.
Основные модули
- Управление шаблонами сайта
- Управление общими настройками
- Контент
- Управление блоками
- Новости или статьи
- Обратная связь
- Файловый менеджер
- Создание меню
- Управление блоками
- Каптча
- Xml карты сайта для улучшения индексации
Дополнительные модули
- Видео
- Фотогаллерея
- FAQ
- Гостевая книга
- Интернет магазин
- Создание Веб-форм
- Гостевая книга
- Статистика посещений
Системные требования
- PHP 5 и выше
- MYSQL 5 и выше
- Extension Gd для работы с изображениями
- Ffmpeg для работы с видео (Модуль видео)
- Свободное место (15MB) + место для файлов
Внешний вид
Внешний вид очень прост, и разрабатывался из собственных интересов и удобства. Слева меню, справа контент.
Подведя итог хочу сказать, что в моей CMS очень много нужно делать руками, если конечно понадобится что-то доработать, а для клиентов очень сложной. Поэтому данный движок используется только в личных целях.