CMS на LAMP: маркетолог обновляет сайт сам
Клиент хотел сайт, который маркетолог правит без программиста. Поставили CMS на LAMP, завели автообновление каталога из учётной системы - и сразу обнаружили, где коробка помогает, а где начинает мешать.
CMS-бум: корпоративные сайты переходят с ручного HTML на управляемые системы
Запрос пришёл с формулировкой, которую мы уже слышали несколько раз: «Хотим сайт, который маркетолог сам обновит. Без программиста». Компания - дистрибьютор стройматериалов, сайт существующий - набор статических HTML-страниц, которые кто-то правил вручную полтора года назад и с тех пор не трогал. Каталог продукции - три сотни позиций, реально отображённых на сайте - меньше половины, и те устаревшие.
Задача, в общем, понятная. Но за простой формулировкой обычно прячется несколько разных задач сразу.
Что на самом деле хотели
Разобрав запрос, получили два отдельных потока:
- Редакторский контент - новости, описания услуг, страница «о компании», контакты. Это именно то, что маркетолог правит руками: написал текст, загрузил картинку, опубликовал.
- Каталог продукции - несколько сотен позиций с ценами, остатками и характеристиками. Вести это вручную через веб-интерфейс нереально: номенклатура меняется в учётной системе каждый день, и человек, который будет переносить изменения руками, либо сойдёт с ума, либо данные на сайте всё равно окажутся устаревшими.
Это важное разделение, к которому мы вернёмся.
CMS на LAMP: выбор и установка
В 2005 году выбор PHP-CMS не такой широкий, как хотелось бы, но вполне рабочий. Рассматривали несколько вариантов - в итоге остановились на Mambo. Причины прозаические: достаточно зрелая, есть русскоязычные ресурсы, шаблоны под нужный дизайн нашлись, и главное - клиент сможет найти человека, который разберётся в системе, без нашей помощи.
Стек стандартный: Linux, Apache, MySQL, PHP. MySQL мы знаем хорошо, сервер уже был арендован, так что инсталляция заняла не больше дня. Настроили шаблон под дизайн клиента, перенесли существующий текстовый контент, объяснили маркетологу основы: как создать материал, как загрузить изображение, как поставить в нужный раздел.
С редакторской частью получилось именно так, как хотел клиент. Маркетолог за час освоил интерфейс и начал самостоятельно. Это, собственно, и есть смысл CMS - убрать программиста из цепочки при каждом текстовом обновлении.
Каталог: где коробка начинает мешать
Со второй частью задачи всё интереснее. Типичный подход - завести в CMS раздел «каталог», создать категории, забить позиции руками. Мы от этого сразу отказались: при трёх сотнях позиций с регулярными обновлениями цен и остатков ручной ввод через веб-форму - это иллюзия автоматизации, а не автоматизация.
Сделали иначе. Учётная система клиента - 1С, данные о номенклатуре там актуальные. Написали скрипт на PHP, который ночью забирает выгрузку из 1С (через XML-файл, который 1С умеет формировать по расписанию) и обновляет таблицы MySQL напрямую, минуя CMS-интерфейс.
Схема простая:
- 1С ночью экспортирует номенклатуру с ценами и остатками в XML
- PHP-скрипт по cron разбирает XML и делает INSERT/UPDATE в базу
- Шаблон каталога на сайте читает данные из той же базы
Каталог обновляется без участия человека. Маркетолог занимается текстами, 1С занимается номенклатурой - каждый инструмент делает своё.
Где коробочная CMS помогает, а где мешает
По итогу проекта сложилось чёткое ощущение:
CMS хорошо работает там, где контент создаёт человек. Тексты, новости, акции, описания - всё, что рождается в голове редактора и требует публикации. Здесь административный интерфейс оправдывает себя полностью.
CMS начинает мешать, как только источник данных - не человек, а система. Встроенные инструменты для импорта в Mambo были либо слишком примитивными, либо требовали сторонних плагинов с непредсказуемым качеством. В итоге мы просто обошли CMS: каталог живёт в тех же таблицах MySQL, но наполняется не через веб-интерфейс, а через скрипт. CMS об этом не знает и не мешает.
Это не недостаток конкретного продукта - это архитектурная граница. CMS строится вокруг человека-редактора. Интеграция с внешними системами - отдельная задача, которую надо решать отдельно. Пытаться натянуть одно на другое - значит воевать с инструментом.
Один момент, который стоит записать отдельно: автообновление каталога из 1С сразу выявило несколько проблем в самой учётной системе. Часть позиций была без категории, у нескольких десятков отсутствовали описания, у некоторых - задвоенные артикулы. В ручном режиме это никто не замечал. Скрипт импорта сделал проблему видимой - примерно как OLAP-куб обнажает кривую классификацию в справочниках. Пришлось потратить день на чистку 1С, но это была полезная работа.
Если нужно не просто поставить CMS, а ещё и связать сайт с учётной системой - расскажите о задаче, разберём, что автоматизировать, а что оставить редактору.
- MySQL и PHP: переводим прайс клиента в базу данных · 17 января 2002
- Первый куб: OLAP-отчёт вместо дня в Excel · 20 июня 2005