Комплексная миграция и рефакторинг гипермаркета: Переход на Joomla 5.3.1 и PHP 8.4
Заказчиком был предоставлен только бекап старой версии сайта и исходя из него в июне 2025 года был реализован масштабный технический проект по глубокой миграции, рефакторингу и модернизации B2C/B2B-гипермаркета строительных материалов, сантехники и электроинструмента. Платформа была переведена с устаревшей кодовой базы Joomla 3.10.12 на передовую архитектуру Joomla 5.3.1. Одновременно с этим произведено мажорное обновление E-commerce ядра VirtueMart с версии 3 до 4.4.10. Ключевой задачей проекта являлась полная переработка фронтенд-шаблона и сторонних модулей для обеспечения абсолютной совместимости с серверным окружением PHP 8.4, а также радикальная реструктуризация каталога и очистка файловой системы от технического мусора.

1. Архитектура миграции и серверная инфраструктура (PHP 8.4)
Переход между поколениями CMS (с 3.x на 5.x) и обновление среды до PHP 8.4 потребовали фундаментального вмешательства в программный код ресурса. PHP 8.4 вводит строгую типизацию, удаляет множество устаревших (deprecated) функций и запрещает использование динамических свойств классов без явного объявления атрибута #[AllowDynamicProperties]. В рамках миграции были фактически выполнены следующие инженерные задачи:
- Экстракция и адаптация БД MySQL: Выполнен перенос таблиц пользователей, контента и заказов. Структура таблиц VirtueMart 3 была программно модифицирована для соответствия реляционным требованиям VirtueMart 4.4.10.
- Рефакторинг шаблона: Старый шаблон сайта был полностью переписан "с нуля" под версию PHP 8.4 и выше. Устранены вызовы устаревших методов Joomla API, внедрены современные пространства имен (Namespaces).
- Резервное копирование: Для обеспечения отказоустойчивости на этапе миграции сгенерированы две независимые версии бэкапов (старого образца на J3 и нового на J5), включающие дампы баз данных и файловые архивы.
2. Модернизация E-commerce ядра (VirtueMart 4.4.10)
Обновление компонента электронной коммерции сопровождалось глубоким SEO-рефакторингом и исправлением логических ошибок предыдущей сборки.
Семантическая реструктуризация URL-адресов
Была проведена ручная переработка структуры категорий и подкатегорий. Некорректные алиасы (например, категория "Услуги" имела системный алиас и были заменены на семантически правильные и короткие (uslugi). Выстроена жесткая иерархия, исключающая дублирование контента. Дополнительно были созданы недостающие категории в строгом соответствии с утвержденной структурой главного меню.
Рефакторинг поисковых алгоритмов
На сайте использовался платный модуль расширенного поиска по товарам. Его исходный код оказался полностью несовместим с PHP 8.4, что вызывало фатальные ошибки компиляции (Fatal Errors). Код данного модуля был полностью доработан вручную: переписаны SQL-запросы, внедрена строгая типизация переменных, адаптированы методы работы с DOM. Дополнительно установлен системный плагин-индексатор, связывающий товары и категории VirtueMart для корректной выдачи результатов.
3. Фронтенд-разработка и пользовательский интерфейс (UI/UX)
Визуальная часть сайта была модернизирована с упором на конверсионные элементы и адаптивность под мобильные устройства.
- Интерактивный Hero-слайдер: Разработана главная заставка, состоящая из трех сменяющихся слайдов с рекламными офферами. В слайдер интегрирована всплывающая кнопка "Подробнее".
- Матрица категорий: Выведены категории товаров в виде удобной плитки кнопок с написанием индивидуальных CSS-стилей.
- Многоуровневые меню: Выведены и стилизованы пункты меню "О компании" в шапке сайта, а также структурирована навигация в подвале (Footer) с написанием соответствующих стилей.
- Мобильная адаптация: Выведены кнопка поиска и контактный телефон в шапку мобильной версии сайта для быстрого доступа.
- Брендинг: Создан и интегрирован кроссбраузерный фавикон (
favicon.ico) с логотипом компании.
4. Инструменты лидогенерации и коммуникации
Для обеспечения надежной связи с клиентами был установлен и настроен компонент QuickForm 3 (QF3). С его помощью были реализованы:
- Всплывающий блок обратного звонка: Настроена форма сбора первичных контактных данных.
- Страница контактов: Создана физическая страница
/contacts, куда интегрирована расширенная форма обратной связи QF3. - Email-маркетинг: Установлено платное расширение для подписки на сайт. Написаны индивидуальные CSS-стили для интеграции блока подписки.
5. Инфраструктура контента, SEO и безопасность
Для защиты ресурса от внешних угроз и подготовки к SEO-продвижению был выполнен ряд технических мер.
Очистка и структуризация файлов
В ходе аудита были навсегда удалены неиспользуемые директории, оставшиеся от демо-данных и старых шаблонов: \images\banners, \images\bizshop, \images\headers, \images\sampledata, \images\2018. Изображения актуальных категорий были частично перенесены; для владельца сайта создана специальная директория /images/virtuemart/category/nujno_dobavit_v-ruchnuy для ручной загрузки недостающих медиафайлов.
Блоговая структура и Sitemap
Установлен и настроен компонент карты сайта. Ссылка sitemap выведена в интерфейс. Созданы разделы для ведения блогов по ссылкам /promotions-discounts и /blog. Созданы базовые материалы для сайта (подлежат дальнейшему заполнению клиентом).
Криптографическая защита админ-панели
Для защиты от брутфорс-атак внедрен плагин AskMyAdmin. Доступ к админ-панели (/administrator) теперь возможен исключительно по криптографической ссылке
6. Рекомендации клиенту по дальнейшему развитию и контент-менеджменту
Внимание: Ниже перечислены инструкции и стратегические рекомендации, переданные владельцу сайта для самостоятельного выполнения в будущем с целью успешного SEO-продвижения. Эти пункты не входили в текущую смету разработки.
6.1. Безопасность и оптимизация
- Защита от спама: Зарегистрировать домен в сервисе Google reCAPTCHA (v2 и v3) и включить на сайте для защиты от ботов.
- Микроразметка: Настроить Schema.org и установить плагин OPEN GRAPH для корректного вывода сниппетов в мессенджерах.
- Производительность: Настроить GZIP-сжатие на сервере и использовать формат изображений
.webp(без использования ресурсоемких сторонних плагинов).
6.2. Работа с VirtueMart и ссылочным профилем
- Вручную откорректировать все категории: заполнить описания, Meta-теги, добавить качественные квадратные изображения, прописать к ним атрибут
alt. - Исключить внешние ссылки из статей и карточек товаров. Сайты с обилием внешних ссылок пессимизируются поисковыми системами. Уникализировать заимствованные у конкурентов изображения.
- Еженедельно размещать минимум одну качественную внешнюю ссылку на свой сайт со сторонних ресурсов (форумы, блоги, соцсети).
6.3. Инфраструктура доверия (E-E-A-T) и контент
- Заполнить пустые страницы (реквизиты, о компании, вопросы и ответы).
- Подключить внешние виджеты отзывов (например, Яндекс). Внутренние отзывы на сайте не вызывают доверия, кроме отзывов непосредственно к товарам.
- Зарегистрироваться в Яндекс Бизнес и Google Мой Бизнес.
- Добавить фото команды, видеообращение директора, раздел «Помощь клиентам», «Способы оплаты», «Гарантии и возврат».
- Заменить онлайн-чат Jivo на прямые переходы в WhatsApp и Telegram.
- Стратегическая задача: Разработать полноценный личный кабинет покупателя для отслеживания заказов.
6.4. Правила оформления карточек товаров в Joomla 5
Для предотвращения разрушения верстки передан строгий регламент:
- Обрабатывать каждый товар вручную, без слепого авто-импорта.
- Запрещено копировать текст напрямую из MS Word. Текст необходимо очищать через Блокнот (Notepad) для удаления скрытых стилей и мусорных тегов (
span,font,). - Внутри описания запрещено использовать инлайн-стили (цвета, размеры шрифта). Все должно управляться CSS шаблона.
- Использовать только один тег
<h1>на страницу. Обязательно заполнять Meta Title (до 60 символов) и Meta Description (до 160 символов). - Транслитерация: Все файлы изображений и URL-алиасы (Alias) должны состоять исключительно из латинских букв в нижнем регистре без пробелов (например:
mikser-b2s-beliy.jpgиproizvoditeli). Загрузка файлов на кириллице категорически запрещена.
7. Использованные технологии
| Технология / Компонент | Версия | Роль в архитектуре проекта |
|---|---|---|
| Joomla! CMS | 5.3.1 | Базовое ядро, роутинг, управление правами (ACL), безопасность. |
| PHP | 8.4+ | Серверная среда выполнения, строгая типизация. |
| VirtueMart | 4.4.10 | E-commerce база, гипермаркет сантехники и электротоваров. |
| QuickForm 3 (QF3) | Latest | Асинхронные формы (Обратный звонок, Страница контактов). |
| Custom Search Module | Modified | Модуль поиска по товарам, деобфусцированный и переписанный под PHP 8.4. |
| AskMyAdmin | Latest | Защита точки входа в административную панель (Secret URL). |
Заключение
Проект миграции строительного магазина стал примером сложного технического обновления с полным сохранением бизнес-логики и SEO-целостности. Переход с устаревшей Joomla 3.10.12 на Joomla 5.3.1 и адаптация под PHP 8.4 гарантируют высокую производительность, безопасность и долговечность платформы. Благодаря ручному рефакторингу модулей, пересборке структуры URL и очистке базы от неиспользуемых файлов, сайт получил "второе дыхание". Переданные заказчику подробные регламенты по контент-менеджменту позволят в дальнейшем самостоятельно масштабировать каталог без риска разрушения верстки и потери позиций в поисковой выдаче.
Развернуть полный вид сайта строительного маркета на Joomla 5

Примечание: текущее состояние и внешний вид действующего сайта могут отличаться от представленных в данном кейсе, так как после завершения и сдачи проекта заказчик мог внести самостоятельные изменения.
Зачем вручную изменять алиасы категорий?
Алиас формирует структуру URL (ЧПУ). Некорректные или автоматически сгенерированные алиасы с цифрами и нерелевантными словами разрушают семантическое ядро. Поисковые системы Яндекса и Google анализируют URL для понимания контекста страницы. Четкий, транслитерированный алиас (uslugi) повышает релевантность страницы поисковому запросу пользователя и улучшает кликабельность (CTR) в выдаче.
Почему модуль поиска перестал работать на PHP 8.4 и потребовал доработки?
Релизы PHP 8.x внесли кардинальные изменения в ядро языка. Стали фатальными ошибки, которые раньше были лишь предупреждениями. Использование неинициализированных переменных, обращение к несуществующим индексам массивов, передача null в строковые функции (например, strlen()), а также использование удаленных функций привело к тому, что старый код поиска провоцировал Fatal Error. Потребовался полный рефакторинг кода с внедрением строгой проверки типов (Strict Types).
Зачем удалять папки с демо-изображениями (sampledata, banners)?
Оставшиеся от старых установок или демо-шаблонов директории перегружают файловую квоту (inodes) на хостинге, замедляя создание резервных копий. Кроме того, бесхозные публичные директории часто используются злоумышленниками как резервуары для загрузки вредоносных скриптов (Web Shells) в случае выявления уязвимостей в сторонних плагинах. Физическое удаление мертвого кода — базовое правило серверной безопасности.
Что означает блокировка панели администратора через AskMyAdmin?
Стандартный адрес /administrator подвергается непрерывным атакам ботнетов, которые пытаются подобрать пароль (брутфорс). Плагин AskMyAdmin перехватывает маршрутизацию на уровне инициализации приложения Joomla. Без знания уникального GET-параметра сервер мгновенно обрывает соединение, выдавая пустую страницу или редирект, что снижает нагрузку на базу данных до нуля.
Почему поисковые системы пессимизируют сайты с обилием внешних ссылок?
Алгоритмы ранжирования (PageRank и его аналоги) рассчитывают "статический вес" страницы. Если сайт бесконтрольно ссылается на сотни сторонних ресурсов без атрибута rel="nofollow", он передает им свой вес, теряя собственный авторитет. При превышении определенного порога исходящих ссылок на нерелевантные домены поисковые алгоритмы (особенно антиспам-фильтры Яндекса) классифицируют такой сайт как ссылочную биржу ("линкопомойку") и исключают из ТОП выдачи.