Это довольно уникальная статья, поскольку исходит напрямую от автора профессиональной CMS (Content Management System — система управления контентом), а именно, вашего покорного слуги, Кристофера и, соответственно, продукта CMS Platinum. На момент опубликования этой статьи на этой CMS работает уже 18 интернет-магазинов, 10 из которых были переведены с других CMS.
Предпосылки для написания собственной CMS, а на это нужно было действительно решиться и потратить не один месяц плотного проектирования/кодинга/тестирования, были очевидными: нужно было написать собственный движок для высоконагруженного сайта интернет-гипермаркета с большим количеством современных «наворотов», специфичных для современной интернет-торговли, высокими требованиями к безопасности и стабильности работы, удобству обслуживания, и что, я впоследствии реализовал, но не вставил в CMS Platinum — масштабировании базы данных гипермаркета на несколько десятков сайтов-сателлитов. Планируемое количество товаров тогда было около 15.000, разделов товаров (категорий и подкатегорий) — до 90, посещаемость — до 15000 уникальных в сутки, скорость загрузки страницы с 75 товарами на главной (30 — обычный вывод, 15 — слайдер хитов продаж, 15 —слайдер новинок, 15 — слайдер рекомендуемых) плюс баннеры не должна превышать 1,5-2 секунд.
Интернет-торговля, как и реализация всевозможных интернет-сервисов в странах СНГ, во всем мире растет со скоростью накатывающегося снежного кома, работа в этом направлении мне показалась перспективной, и, отвлекшись от своих экспериментов с программированием искусственного интеллекта, я сразу переключился на эту нишу.
Нужно отметить, что перед тем как заняться непосредственно разработкой собственной CMS, я загрузил и запустил у себя на Денвере в общей сумме около 150 различных CMS. Внимательно рассмотрел каждую из них, записывая себе в блокнот их плюсы и минусы. Естественно, дополнительно внимательно изучил и собрал информацию о том, как и на базе каких технологий работают гранды рынка, начиная от eBay и Amazon, и заканчивая популярными сток-сайтами (stock — продажа фото, видео, программ и т.п. через интернет).
Также огромным подспорьем оказался просмотр многочисленных видеоуроков, в которых демонстрировались разные методики и способы решения типовых ситуаций. К сожалению, забыл сейчас имя того датчанина, уроки которого мне понравились больше всех за простоту и емкость используемых им алгоритмов. В общем, все было очень интересно. После такого подробного изучения, я уже примерно представлял то, что хочу сделать и, главное, как.
Многие могут спросить, почему не Joomla, WordPress, Drupal и пр.? Ведь по такому пути идет множество программистов, особенно начинающих и начитавшихся в интернете о том, как «за 5 минут создать интернет магазин и построить успешный бизнес». Не хочу вдаваться в дискуссии — эта тройка точно не подходит, тяжелый неоптимизированный код тому основная причина. Тем более, что требуемый функционал можно легко программировать самостоятельно на PHP, вместо того, чтобы искать какие-то плагины и модули.
Второе, от чего я отказался — использование фреймворков и всевозможных шаблонизаторов типа smarty. Дело в том, что их, равно как и вышеназванные Joomla, WordPress, Drupal нужно подстраивать под свои задачи, они не выдерживают конкуренции по производительности по сравнению с тем, что написано с пониманием и под конкретные задачи в нативном коде. Это мне напомнило те времена, когда я сталкивался в современном геймдеве с тем фактом, что игры, разрабатываемые на каком-нибудь супер-дуппер популярном «движке» или ох-какой технологии еле выводили визуализацию спрайтов на компьютерах, которые могли запускать последние TES или Risen. Конечно, сам пример обобщенный, но яркий. Также незадолго до написания своего движка, я работал над переводом одного интернет-магазина со smarty на обычный PHP и в том конкретном случае, производительность движка после его обновления увеличилась на 80%.
В общем, ничего никому доказывать не хочу, тем более поднимать тему, мое решение было одно — нативный PHP, программирование в редакторе sCite (эта программа является альтернативой Notepad++).
CMS Platinum 1.2
Сейчас уже 2013 год и в мае появится CMS Platinum 1.2, которая разделена на две модификации — обычную и Pro. Версия Pro предназначена для высоконагруженных ресурсов, оптимизирована за счет использования кэширования на стороне сервера (обычное кэширование, memcashed), использования Cron, и множества собственных ноу-хау, улучшающих производительность.
Для тестирования системы на высоких нагрузках разработан специальный модуль с отдельным бэк-эндом администрирования и статистики производительности. Подключая его, администратор может увидеть соответственно всю статистику по производительности, количеству и скорости выполнения запросов к БД, и в дальнейшем принимать решения по оптимизации (предлагаются готовые варианты на выбор). Бэк-энд производительности подключается опционально через основную панель администрирования, например, на сутки или неделю для сбора статистики. Администратор уже видит наглядно проблемные места, и в случае необходимости, может, например, переключить проблемный запрос к базе данных на вариант Cron+memcahed, указав частоту обращений (одно из решений).
После внесенных изменений, вся система (сайт) переключается на новый режим работы, и бэк-энд производительности теперь можно отключить.
Второе отличие версии Pro от обычной заключается в большем количестве предлагаемых модулей, таких как, например, ротатор баннеров/контента (случайная выборка периодически кэшируется на стороне сервера, а не производится прямым обращением «пользователя» к БД), и прямой сервисной поддержкой для случаев, когда владельцы CMS Platinum Pro хотят добавить новый функционал. Если он (этот функционал) способствует дальнейшему улучшению CMS Platinum, то разработка с нашей (или моей) стороны будет бесплатной.
И третье ключевое отличие версии Pro — реализация отдельных субдоменов для поставщиков/продавцов, которые в рамках собственных админ-интерфейсов могут самостоятельно добавлять свои товары, информацию об услугах и так далее. Чтобы было более понятно, скажу, что этот функционал сродни тому, что вы можете увидеть у ресурсов shop.by или dial.by.
Если говорить об общем сравнении версий CMS Platinum 1.0 и 1.2, то в 1.2 основной упор был сделан на улучшение характеристик производительности, добавление функционала, а также создание CSS3-альтернатив элементам, написанным на JavaScript(jQuery). И еще одна новинка CMS Platinum 1.2 — модуль калькулятора. Он написан на JavaScript/XHTML. Содержит чекбоксы, комбобоксы, поля ввода количества с подсчетом суммы в реальном времени и кнопкой отправки заказа на e-mail. Для этого модуля написано подробное руководство на доступном понятном языке, поэтому изменять его можно по своему усмотрению.
Для справки
CMS Platinum — это собственная разработка, стартовавшая в 2012 году и уже опробованная в нескольких крупных проектах — интернет-магазинах. Именно для них и на их базе она создавалась изначально. Проект развивается поэтапно, при этом каждая версия CMS является законченным продуктом, готовым к работе сразу после установки.
Основными заказчиками CMS Platinum являются студии веб-дизайна и владельцы интернет-магазинов.
CMS Platinum не(!) предназначена для совсем новичков и представляет собой базовый конструктор, включающий БД (MySQL) с готовой структурой, панель администрирования, основной дизайн-шаблон, набор модулей и рабочую документацию.
Ключевые особенности CMS Platinum
- CMS написана на нативном PHP, XHTML, JavaScript (jQuery), Ajax с использованием CSS3.
- Высокая скорость работы и производительность движка сравнимы с более дорогими коммерческими CMS.
- Отдельное внимание было уделено вопросам безопасности.
- БД — MySQL. Оптимизированная структура таблиц. MyISAM, ежесуточное резервное копирование.
- Многоуровневая система разделов (количество уровней без ограничений).
- Оптимизированный поиск.
- Удобная админ-панель. Визуальные (WYSIWYG) текстовые редакторы, загрузка изображений, менеджер файлов и т.п.
- Каждый товар может быть прикреплен сразу к нескольким разделам (до пяти).
- Автоматическое и/или ручное занесение товаров в рекомендованные, новинки, хиты продаж (выводятся в отдельных JS-слайдерах на страницах сайта).
- 18 различных вариантов JavaScript-слайдеров (8 вертикальных, 4 горизонтальных и 6 вертикальных/горизонтальных).
- Автоматическое добавление подарков в зависимости от цены товара (до пяти категорий подарков).
- Отдельная таблица поставщиков (их описания и логотипы могут автоматически выводиться совместно с товарами).
- Всевозможные блоки-«врезки» для вставки баннеров и дополнительного контента в страницы сайта (через админ-панель). Ротатор баннеров.
- Облако тегов (5 вариантов исполнения).
- Функции обратного звонка, онлайн-консультанта, другие формы обратной связи.
- Бронирование товаров.
- Модуль "Сейчас смотрят".
- Модуль отображения недавно просмотренных товаров.
- Реализация «с этим товаром покупают».
- Корзина товаров связана с интерфейсом админ-панели, также информация о заказе может отправляться на любой e-mail.
- Два уровня доступа к части администрирования — администратор и оператор.
- Возможность переключения тематического интерфейса фронт-энда из админ-панели, а именно, кроме основной используется четыре темы: Новый Год, День Святого Валентина, 8 марта, 23 февраля.
- Базовый дизайн-шаблон.
- "Хлебные крошки".
- Автоматический подсчет товаров в категориях и их подкатегориях.
- Возможность создания динамического многоуровневого меню. Добавление отдельных страниц с различной иерархией через админ-панель.
- Модуль калькулятора.
- ...и др.
Какие планы развития у CMS Platinum?
На данный момент проводятся работы по переводу CMS Platinum, документации и т.п. на английский язык. Лично же я, как автор этой CMS, сейчас решаю вопрос написания чат-сервера (собственный вариант онлайн-консультанта). Меня когда-то подначили языком программирования Erlang, поэтому попытаюсь реализовать изначально что-то на нем. В целом, сайт проекта — www.igd.by, там вся текущая информация. Также там вы можете узнать, что в рамках основного дизайн-шаблона опционально можно уже включать микроразметку Schema.org.
Кристофер
|