ADG Оставить заявку
Блог Автоматизация 4 мин чтения

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, а ещё и связать сайт с учётной системой - расскажите о задаче, разберём, что автоматизировать, а что оставить редактору.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.