Выбор CMS для создания сайта
Несколько лет назад при выборе CMS для разработки сайта я пользовался довольно простой схемой. Несмотря на её простоту, результат оставался удовлетворительным. Алгоритм был таким: если планировался интернет-магазин — выбиралась Joomla, для любого другого типа сайта — WordPress. В то время WordPress не подходил для магазинов, так как существовало лишь 2–3 плагина для электронной коммерции, которые не имели интеграции с российскими платёжными системами и службами доставки, а также были недостаточно гибкими для SEO-оптимизации.
Сегодня WooCommerce для WordPress значительно расширил функциональность, что позволяет создавать интернет-магазины на этой платформе без особых сложностей. Однако у меня осталось несколько старых сайтов на Joomla, и некоторые из них достигли пределов возможностей этой системы.
Актуальные проблемы Joomla 3, требующие миграции
1. Система ЧПУ
Joomla 3, как и более ранние версии, имеет неудобную систему человеко-понятных URL. Разработчики отошли от динамических адресов, но создать по-настоящему качественные ЧПУ так и не смогли (или не захотели). В результате для получения нормальных URL приходится использовать сторонние компоненты.
Один из самых популярных — sh404sef. Он поддерживает множество расширений и формирует URL вида: домен/категория/подкатегория/запись. Это не только удобно, но и улучшает индексацию и ранжирование в поиске, включая отображение «хлебных крошек» в сниппетах.
Однако у компонента есть серьёзный недостаток (рассматривается версия 4.7.3, после которой лицензия не продлевалась). Проблема в следующем: компонент сканирует URL внутри сайта. Разработчик утверждал, что генерация происходит только при обращении к странице, но практические тесты показали иное.
Примеры:
- На работающем сайте с небольшим трафиком при каждом обновлении списка URL их количество росло, хотя в логах не было активности ботов.
- На старом сайте с 30 000 реальных страниц в базе накопилось 800 000 записей URL, созданных компонентом. Очистка базы и повторная генерация приводили к медленному восстановлению ссылок, при этом многие из них сначала выдавали ошибку 404.
Такое поведение приводит к раздуванию базы данных и замедлению работы сайта. Для небольших проектов очистка помогает, но для крупных — чревата потерей трафика.
2. Каталоги
Для организации каталогов в Joomla используются платные компоненты, например SOBI и Zoo. Последний с набором плагинов стоит несколько сотен долларов, но даже за такую цену не обеспечивает стабильной работы. При базе в 130 000 записей страница с категориями может загружаться 30–40 секунд, даже если на ней нет списка товаров. Создаётся впечатление, что компонент анализирует все записи перед выводом рубрик.
Обсуждения на форумах показали, что компонент Zoo не рекомендуется использовать для каталогов с более чем 25 000 записей, даже при включённом кешировании.
Выводы
- Магазины с более чем 20 000 товаров со временем начинают тормозить из-за компонентов ЧПУ.
- Каталоги с более чем 25 000 записей замедляются сразу.
Возможные решения
- Более мощный сервер. Тестирование на VPS (8 ядер, 8 ГБ RAM) не дало прироста производительности.
- Тонкая настройка сервера. Работа с опытным системным администратором в течение трёх дней не принесла улучшений.
- Смена компонента ЧПУ. Может решить проблему с базой URL, но не устраняет сложности с каталогами. Кроме того, любые сторонние расширения замедляют CMS.
- Смена компонента каталога. Аналогично пункту 3.
- Оптимизация кода CMS. Нежелательный вариант, так как правки могут конфликтовать с обновлениями, а отказ от обновлений небезопасен.
- Перенос сайтов на другую CMS. Это и стало окончательным решением.
Опыт миграции с Joomla 1 на WordPress 3
Раньше я уже переносил контент с Joomla 1 на WordPress 3. После перебора нескольких решений был найден рабочий вариант. К сожалению, автор того инструмента забросил разработку, и за 5 лет обновлений не было. Поэтому пришлось искать новые способы.
Как перенести контент с Joomla 3 на WordPress
Удалось найти всего два варианта:
- Платный онлайн-сервис. Взимает плату за количество переносимых записей. Стоимость миграции крупного сайта может превышать цену разработки с нуля.
- Платный плагин для WordPress. Существует бесплатная версия, но её функционал ограничен. Полный перенос требует покупки плагина (около 40 евро) и дополнительных расширений для переноса данных из компонентов Joomla (например, комментарии из JComments — 15 евро, записи из K2 — 25 евро, товары из VirtueMart — 70 евро). Настройка проста: указываются данные для подключения к базе Joomla и параметры размещения контента. Плагин поддерживает возобновление переноса при обрыве или зависании без необходимости начинать всё заново.

Результаты миграции
После переноса на WordPress с реализацией каталога через плагин Pods и загрузкой 50 000 записей время открытия страниц составило 3 секунды при отключённом кэшировании. После окончательного импорта всех данных и активации серверного и сайтового кэширования показатели будут уточнены. Однако уже очевидно, что WordPress демонстрирует значительно более высокую производительность по сравнению с Joomla. Поэтому остальные сайты также будут перенесены на эту платформу.
Готов ответить на ваши вопросы в комментариях.
UPD. После увеличения числа записей в WordPress до 90 000, переноса на боевой веб-сервер, подключения кэширования и CDN, скорость загрузки страниц составила 1,7 секунды. Для сравнения: на Joomla аналогичные страницы открывались за 3,2 секунды. Таким образом, производительность статей, категорий и других типов записей увеличилась почти в 2 раза. Что касается каталога: на Joomla его страницы загружались за 30–32 секунды, а на WordPress — за 1,7 секунды, что означает ускорение почти в 20 раз.

Va
Перенос контента – не такая уж и проблема.
Вот перенос товаров из virtuemart в woocommerce – целая эпопея. Пытался найти расширение, желательно бесплатное (ведь используется только один раз, и платить, к примеру, 480 евро как-то совсем нерентабельно)…
И если с импортом в вукоммерс проблем нет (в последней версии внедрен экспорт/импорт), то вот любые попытки выгрузить что-либо из жумлы сразу упираются в … “денег дай”. При этом хождение по форумам поддержки показывает: факт оплаты не означает беспроблемности процедуры 🙁
Решил таким образом: выгрузил из жумловой базы товары с картинками, категориями, ценами и стандартным импортом в woocommerce загрузил товары в вордпресс. Экспорт из базы строился на select’ах с присоединением доп. столбцов посредством left outer join.
Владимир Шлыков
Указанный плагин с аддоном для VM стоит 110 евро.
Или вот еще вариант: какой-нибудь парсер, типа Content Downloader стоит 1000 рублей. Импорт есть встроенный. Парсим товары с фотками в csv и импортируем.