Исходная ситуация: что болело у клиента
Меня зовут Евгений Семёнов, я технический директор ITfresh. Мы обслуживаем IT-инфраструктуру московских компаний до пятидесяти рабочих мест — серверы держим в дата-центре МТС, за плечами больше пятнадцати лет практики. Сегодня разберу типовое внедрение, которое хорошо показывает, за что я люблю Joomla в корпоративном сегменте: сайт производственной компании, где контент правят четыре разных отдела и при этом никто никому не наступает на ноги.
Портрет клиента. Производственная компания, около сорока рабочих мест, выпускает промышленное оборудование и активно экспортирует его. Сайт — самописный движок 2015 года от студии, которой больше нет. Правки умел вносить один подрядчик-фрилансер, который в какой-то момент просто перестал отвечать. Дальше знакомая многим картина:
- новость о выставке публикуется неделю — через письмо «куда-то», напоминания и ожидание;
- англоязычная версия — вручную скопированные страницы, которые давно разъехались с русскими: на EN-версии висят снятые с производства модели;
- каталог продукции — статические страницы, характеристики в них правит только «тот самый» подрядчик;
- заявки с сайта падают в общий ящик info@, где тонут между спамом и счетами.
Требования сформулировали быстро: нормальный каталог продукции с характеристиками и чертежами, честная английская версия, возможность редактировать сайт силами четырёх отделов без риска «кто-то удалил главную», и чтобы заявки долетали в CRM отдела продаж. Отдельным пунктом — независимость от конкретного подрядчика: обжёгшись раз, директор хотел систему, которую сможет подхватить любой специалист с рынка.
Почему выбрали Joomla, а не WordPress и не Bitrix
Мы не «джумла-студия» и не защищаем никакую CMS по религиозным соображениям — ставим клиентам и WordPress, и коробки, когда это оправдано. Здесь выбор решили три фактора.
Первый — права доступа. Четыре отдела в одной админке — это ровно тот случай, где у Joomla до сих пор фора: гибкие ACL (списки контроля доступа) с группами, наследованием и правами на уровне отдельных категорий встроены в ядро. В WordPress из коробки пять фиксированных ролей, и тонкую нарезку «маркетинг правит новости, но не каталог» дают только сторонние плагины.
Второй — мультиязычность. В Joomla ассоциации языков — штатный механизм: связал русский и английский материал, переключатель языка сам ведёт на правильную страницу, hreflang генерируется ядром. В WordPress это опять плагины — со своей ценой, своими багами и своим циклом обновлений.
Третий — деньги и независимость. Полноценный интернет-магазин клиенту не нужен (каталог без корзины — B2B-продажи идут через менеджеров), поэтому переплачивать за коммерческую платформу с ежегодным продлением лицензии незачем. Joomla распространяется по GPL, бесплатна для коммерческого использования, а специалистов по ней на рынке достаточно, чтобы не зависеть ни от нас, ни от кого-либо ещё.
Таблица критериев, как мы её показывали директору (упрощённо):
| Критерий | Joomla 6 | WordPress | Коммерческая коробка |
|---|---|---|---|
| Права для 4 отделов | в ядре, до уровня категории | плагины | есть |
| RU + EN версии | в ядре | плагины | есть |
| Каталог с характеристиками | ядро: кастомные поля | плагины/конструкторы | есть |
| Лицензия | 0 ₽ (GPL) | 0 ₽ (GPL) | десятки тыс. ₽/год |
| Зависимость от подрядчика | низкая | низкая | средняя |
| Капча/формы без сервисов Google | в ядре (PoW-капча) | плагины | зависит |
Немаловажно и то, что проект живой: на момент внедрения актуальной была ветка Joomla 6.1 «Nyota» с визуальным редактором workflow и встроенной proof-of-work капчей, security-релизы выходят регулярно. Про сам движок и его состояние в 2026 году я подробно писал в обзорной статье серии.
Проектирование структуры: каталог на кастомных полях
Главный архитектурный выбор проекта: не ставить CCK-конструктор контента, а собрать каталог на штатных механизмах — категориях, материалах и кастомных полях ядра.
Структура получилась такая. Категории повторяют товарные линейки: «Насосное оборудование», «Компрессоры», «Запчасти и оснастка» — с подкатегориями до второго уровня. Каждая единица продукции — обычный материал Joomla в своей категории. А всё, что отличает карточку товара от статьи, сделано наборами кастомных полей, привязанными к категориям каталога:
- числовые поля — мощность, производительность, масса;
- поля-списки — класс защиты, тип привода, напряжение питания (жёсткие справочники, чтобы редакторы не плодили «380В», «380 В» и «~380»);
- медиа-поля — фотографии изделия и, отдельным полем, чертежи в PDF;
- поле-файл — сертификаты и декларации соответствия.
На витрине шаблон выводит поля таблицей характеристик, а модуль фильтрации позволяет сузить список по значениям полей — «компрессоры от 15 кВт с классом защиты IP54» находятся в два клика.
Почему не CCK? Потому что каждый крупный конструктор — это фактически вторая CMS внутри первой: свой формат хранения, свои шаблоны, своя судьба при мажорных обновлениях. Штатные поля переживают обновления ядра безболезненно — что и подтвердилось: плановые апдейты в течение года не потребовали ни часа доработок каталога. Для сравнения: на «наследных» сайтах с конструкторами каждое мажорное обновление — мини-проект.
Перенос данных — отдельная песня, о ней в разделе про грабли: 800 позиций каталога жили в Excel-файле, который вёлся годами без какой-либо дисциплины.
Мультиязычность: русский + английский без плагинов
Включение второго языка в Joomla — это штатная последовательность: устанавливаем языковой пакет, создаём языковые категории контента, включаем плагины «Языковой фильтр» и «Языковые ассоциации», дублируем меню. После этого у каждого русского материала появляется вкладка ассоциаций, где он связывается со своим английским переводом — и переключатель RU/EN на любой странице ведёт ровно на её перевод, а не на главную.
Что переводили, а что нет — решение бизнесовое, и его стоит принимать до старта:
- каталог — полностью: карточки, характеристики, чертежи с двуязычными подписями; это ядро экспортных продаж;
- страницы о компании, контакты, сертификаты — полностью;
- новости — только по-русски: англоязычные посетители приходят за оборудованием, а не за новостью о корпоративном субботнике. Языковой фильтр честно скрывает раздел на EN-версии.
Две ловушки, которые надо закладывать в смету сразу. Первая: меню и модули дублируются на каждый язык — по сути, вы собираете две навигации. Это не сложно, но это часы работы, которые забывают посчитать. Вторая: связывание сотен карточек ассоциациями — механическая, но обязательная работа; мы её частично автоматизировали скриптом при импорте каталога, привязывая переводы по артикулу.
SEO-часть ядро закрывает само: hreflang на связанные страницы, отдельные sitemap по языкам, корректные канониклы. Для экспортёра это не косметика — EN-карточки индексируются и приводят запросы от иностранных дилеров.
Четыре отдела в одной админке: ACL и workflow на практике
Ради этого раздела кейс и писался. Задача: четыре отдела правят сайт, никто не может сломать чужое, а всё публичное проходит контроль маркетинга.
Собрали четыре группы пользователей поверх стандартной иерархии Joomla:
| Группа | Кто в ней | Что может |
|---|---|---|
| Маркетинг | 2 человека | новости, главная, акции; публикация ВЕЗДЕ |
| Продукт | 3 инженера | создание и правка карточек каталога, без публикации |
| HR | 1 человек | раздел вакансий: создание и правка |
| Секретариат | 1 человек | контакты, реквизиты, режим работы |
Техника простая: в правах каждой категории («Новости», «Каталог», «Вакансии», «О компании») разрешаем нужной группе «Создание» и «Изменение», остальным — наследование запрета. Инженеры «Продукта» физически не видят чужих разделов в админке — меньше соблазнов и меньше случайных правок.
Поверх прав — workflow согласования, штатный механизм публикации, который в ветке 6.1 получил визуальный drag-and-drop редактор. Наша схема из трёх состояний: «Черновик» → «На согласовании» → «Опубликовано». Инженер заполняет карточку и передвигает её на согласование; публиковать переход имеет право только группа «Маркетинг». Маркетолог видит очередь на одобрение, проверяет тексты и жмёт «Опубликовать». Для новостей самого маркетинга workflow короткий — они публикуют сразу.
Результат за полгода эксплуатации: ни одного инцидента «кто-то удалил страницу» или «на сайте появился черновик с ошибками». До внедрения подобные случаи у клиента были нормой жизни — на старом сайте все правки шли через один аккаунт с полными правами.
Формы, капча и лиды
Заявки — то, ради чего сайт существует. Сделали три вещи.
Форма запроса КП на каждой карточке. Кнопка «Запросить коммерческое предложение» открывает форму, в которую скрытым полем автоматически подставляется артикул и название позиции. Менеджер получает не «здравствуйте, сколько стоит?», а конкретный запрос по конкретной модели — скорость ответа выросла в разы.
Капча без Google. До запуска тестовая версия формы без защиты собирала десятки спам-заявок в день — боты находят формы быстрее, чем поисковики. Классическое решение — reCAPTCHA — для российского сайта сегодня ненадёжно: сервис то доступен, то нет. Выручила встроенная proof-of-work капча Joomla 6.1: посетитель не видит ничего (задачку решает его браузер), внешних зависимостей ноль, а спам упал до единичных писем в месяц.
Доставка лидов. Каждая отправка формы делает два действия: шлёт вебхук с JSON-полями заявки в CRM клиента (там автоматически создаётся лид с источником «сайт» и артикулом) и дублирует письмо на ящик отдела продаж через корпоративный SMTP — резервный канал на случай недоступности CRM. Все отправки дополнительно логируются в базе сайта, так что спор «была заявка или не было» решается за минуту.
Цифры проекта и что пошло не по плану
Честные цифры собирательного проекта.
Срок: 6 недель от брифа до запуска при плане 4. Разложение по этапам: неделя — структура, прототип и согласование; две недели — шаблон, вёрстка, настройка ACL и языков; неделя (по плану) на перенос каталога, растянувшаяся на две с половиной; параллельно — формы и интеграции; финальная неделя — обучение и запуск. По трудозатратам проект уложился примерно в полторы сотни человеко-часов, из которых треть съел перенос данных.
Теперь грабли — самое полезное в любом кейсе:
- «Грязный» Excel. В исходном файле каталога одна и та же характеристика писалась пятью способами, половина чертежей ссылалась на локальный диск уволенного сотрудника. Пришлось писать скрипт нормализации + два круга ручной сверки с инженерами. Вывод: аудит исходных данных — до подписания сроков, а не после.
- Дубли URL после включения SEF. Старый сайт годами жил на адресах вида
/catalog.php?id=127, и при переезде часть страниц оказалась доступна по двум-трём адресам. Лечили таблицей 301-редиректов со старых URL и канониклами; позиции в поиске пережили переезд без провала. - Обучение — две сессии вместо одной. Редакторы-инженеры прекрасно освоили поля и черновики, но workflow «почему моя карточка ещё не на сайте?» потребовал отдельного часа с разбором сценариев. Закладывайте на обучение больше, чем кажется.
Метрика, которая понравилась директору больше всего: публикация новости теперь занимает 10 минут силами самого отдела — против «письмо подрядчику и ждать неделю». Заявки перестали теряться: до CRM доходит каждая, с артикулом и источником. А англоязычный каталог впервые в истории компании совпадает с русским.
Как этот шаблон переносится на другие сегменты
Паттерн «каталог на кастомных полях + ACL + мультиязычность + workflow» — не специфика производства. Мы переиспользуем его почти без изменений в других отраслях наших клиентов.
Клиника
Отделения — категории, врачи — материалы с полями (специализация, стаж, учёная степень, расписание приёма, фото). ACL: регистратура правит расписания, главврач согласует публикации, маркетинг ведёт акции и новости. Единственное принципиальное отличие — онлайн-запись и интеграцию с МИС мы всегда выносим во внешний специализированный сервис: медицинские данные и календарь приёма — не то, что стоит хранить в CMS; сайт лишь встраивает виджет записи.
Юридическая фирма
Практики — категории, партнёры и юристы — карточки с полями. База статей и аналитики с workflow, где публикацию одобряет управляющий партнёр — юристы особенно ценят, что черновик физически не может попасть на сайт без визы. EN-версия для иностранных клиентов ложится на те же языковые ассоциации.
Бухгалтерская фирма
Тарифы — материалы с числовыми полями (цена, состав услуг), из которых собирается сравнительная таблица; простой калькулятор стоимости на JS; блог со статьями «что изменилось в отчётности» как SEO-канал. Здесь же обычно включаем и наш регламент эксплуатации — про него у меня есть отдельная статья серии.
Вывод простой: большинству корпоративных сайтов нашей целевой аудитории — компаний до 50 рабочих мест со структурой из нескольких отделов — нужен не конструктор лендингов и не тяжёлый портал, а ровно этот набор: структурированный каталог, права по отделам, второй язык и контролируемая публикация. Joomla закрывает его штатными средствами, без единого платного расширения — что прямо влияет и на бюджет запуска, и на стоимость владения.
Оставить комментарий