Falstem.ru — корпоративный сайт производителя ограждений (MODX)
Производитель периметральных ограждений (ЮФО) · Производство ограждений / промышленность; сегмент ТЭК (НПЗ, заводы, подстанции, производственные зоны)
Заявки с сайта производителя ограждений уходили через чужой виджет — перевёл их на собственную обработку, с сохранением в админке и возможностью отката.
- PHP
- MySQL
- MODX Revolution
- pdoTools
- MIGX
- FormIt
- FetchIt
- JavaScript
- jQuery
- Swiper
- Fancybox
- HTML
- CSS
- адаптивная вёрстка
В цифрах
- 6 страниц + папка-обзор
- раздел ТЭК на новом шаблоне solutionPage (заводы, произв. зона, пром. объекты, охраняемые территории, НПЗ, электроподстанции), 6 фаз, чекпоинты пройдены
- 11 чанков-секций + 4 TV (2 MIGX-клона)
- переиспользуемая архитектура «страница-решение» (шаблоны solutionPage/solutionSection, TV solution_category/intro_image/gallery/faq)
- Bitrix24 → FormIt + FetchIt
- миграция форм обратной связи на нативный MODX-стек; флаг конфигурации use_native_contact_form (по умолчанию OFF) для безопасного переключения/отката; сохранение заявок через FormItSaveForm
- 2796 КБ → 691 КБ
- оптимизация фото галереи (страница «заводы») без изменения размеров (quality 82 + strip + progressive)
- 26.03 – 13.06.2026
- период активных работ в несколько итераций
- 8+ HTML-отчётов
- отчёты по итерациям: редизайн шапки, аудит хардкода, секции, слайдеры, формы
Ключевое
- Собрал раздел отраслевых решений на шаблоне, который переиспользуется: обзор и шесть страниц по типам объектов, навигация достраивается сама при добавлении страниц.
- Сверстал новую шапку с многоуровневым меню точно по макетам; мобильную версию спроектировал сам — макетов под неё заказчик не предоставил.
- Фотографии галереи весят 691 КБ вместо 2796 КБ при том же размере изображений.
- Работал прямо на живом сайте без тестовой копии: каждое изменение — отдельным скриптом с резервной копией базы и заранее описанным откатом.
- Нашёл дыру от прошлых работ: резервные копии базы лежали в открытой части сайта и скачивались по прямой ссылке. Вынес их за пределы сайта.
Задача
ФАЛСТЕМ производит ограждения для промышленных объектов — заводов, нефтеперерабатывающих предприятий, электроподстанций. Сайт компании работал, но заявки с него уходили через встроенный виджет стороннего сервиса: собственной обработки форм не было, и заявка попадала сначала к чужому подрядчику, а уже потом к менеджеру.
Параллельно накопились задачи развития: новая шапка с многоуровневым меню по свежим макетам и целый раздел отраслевых решений, которого на сайте не существовало. Всё это предстояло делать прямо на живом сайте — тестовой копии у проекта не было.
Что сделано
- Перевёл формы обратной связи с чужого виджета на собственную обработку: заявка проверяется на сервере, сохраняется в админке и уходит письмом, согласие на обработку данных сохранено. Оставил переключатель, чтобы вернуться к прежнему варианту одним движением, если что-то пойдёт не так.
- Спроектировал шаблон «страница-решение» и собрал на нём раздел отраслевых решений: обзорная страница и шесть страниц по типам объектов, с галереей, вопросами-ответами и боковой навигацией, которая достраивается сама при добавлении новых страниц.
- Сверстал новую шапку с многоуровневым меню и секцию «Преимущества» точно по макетам. Мобильную версию спроектировал сам — макетов под неё не было.
- Сжал фотографии галереи, не трогая их размеры на странице.
- Нашёл и закрыл проблему, оставшуюся от прошлых работ: резервные копии базы данных лежали в открытой части сайта и скачивались по прямой ссылке.
Итог
Фотографии галереи весят 691 КБ вместо 2796 КБ при том же размере изображений. Раздел отраслевых решений открыт: обзор и шесть страниц, все адреса отвечают. Заявки с сайта больше не зависят от стороннего сервиса — приходят на почту и хранятся в админке, где их видит менеджер. Резервные копии базы, лежавшие в открытом доступе, вынесены за пределы сайта.
Технические детали
Решение и подход
- Стек MODX и консистентность. Все решения опираются на существующие конвенции сайта: pdoTools (pdoResources/pdoField/getImageList), MIGX для повторяющихся блоков (галерея, FAQ), Swiper по
data-slider, jQuery-спойлеры поdata-spoller, Fancybox-модалка#modal, токены:root. - Параметрическая архитектура раздела. Вместо вёрстки одной страницы заложен шаблон с TV/MIGX и секциями-чанками; сайдбар-навигация строится динамически по
solution_categoryчерезpdoResources(самоисключение текущей страницы), крошки — черезpdoField. Это рассчитано на масштабирование (в меню запланировано ~40 пунктов по 7 категориям). - Безопасный деплой на проде. Изменения MODX применялись идемпотентными PHP-скриптами по stdin (
getObject→update/newObject), без оставления исполняемых файлов в webroot; перед каждой группой изменений — бэкапы затрагиваемых таблиц БД и файлов (вне webroot + локальная копия), с заранее описанной процедурой отката. - Нетривиальные места. Тонкости MIGX-конфигов при клонировании TV (
input_properties.configs); вложенные friendly-URL черезuri_overrideбез слома относительных путей ассетов; переход наlink_tag_scheme=abs; устранение grid-коллапса на мобильном (minmax(auto,1fr)раздувал колонку до 2²⁵px) переходом наminmax(0,1fr)+min-width:0; покраска SVG-иконок из спрайта черезcolor(а неfill) приcurrentColor.
Стек и обоснование
Платформа задана сайтом. MODX Revolution (PHP/MySQL) — то, на чём сайт уже работал, поэтому все решения делались в его парадигме: шаблоны, чанки, сниппеты и TV живут в БД, а не в файлах. pdoTools и MIGX — штатные для MODX способы выбирать ресурсы и описывать повторяющиеся блоки (галерея, FAQ), и отход от них означал бы чужеродный код в проекте, который дальше поддерживают другие.
Формы: FormIt + FetchIt. Актуальная для 2026 года связка — серверная валидация на стороне MODX плюс отправка через Fetch API без jQuery. FormItSaveForm даёт хранение заявок «из коробки», то есть менеджер видит их в админке без отдельной разработки.
Фронтенд — то, что уже подключено. Swiper 11, Fancybox и jQuery на сайте были; добавлять к ним параллельные библиотеки ради одного раздела значило бы утяжелять страницу без выигрыша.
Figma REST API — чтобы снимать размеры и цвета из макета точными значениями, а не на глаз со скриншота.
Инженерные вызовы
- Работа на живом продакшене без стейджинга: решено идемпотентными скриптами по SSH/stdin, обязательными бэкапами БД/файлов вне webroot и пофазными чекпоинтами.
- Миграция форм без видимого бэкенда (был только JS-embed): клонирование DOM формы 1:1, адаптация под FetchIt (
data-error-узлы), feature-flag для отката. - Масштабируемость нового раздела: параметрический шаблон вместо одноразовой вёрстки.
- Тонкости MODX/MIGX, friendly-URL и CSS grid (см. «Решение и подход»).
- Дисциплина безопасности: вынос открытых по HTTP дампов БД из webroot; отказ хранить доступы в файлах репозитория.
Услуги в проекте
- доработка существующего
- миграция
- разработка
- аудит
- деплой
- 152-ФЗ/ПДн
- SEO
- поддержка