Несколько фокусов с CMS Joomla! Модернизация сайтов на Joomla! старых версий 1.5/2.5 до актуальной 3.6
- Опубликовано: 25.02.2017
- Автогенерация и отображение эскизов фотоальбомов модулем RokBox
- Доработка горизонтального меню-списка для динамического разворачивания подпунктов
- Единая кнопка «Сохранить изменения» для корзины Интернет-магазина VirtueMart
- Изменение/снятие ограничений на длину строки поиска и его попутная доработка
- Исправление ссылки на главную/домашнюю в горизонтальном меню старого стиля
- Модернизация сайтов на Joomla! старых версий 1.5/2.5 до актуальной 3.6
- Отображение заглушки «сайт в разработке» для всех и всего сайта для избранных
- Подсветка пункта меню типа «внешняя ссылка», или Как сделать ссылки на категории VirtueMart
- Преобразование адресов сайта в дружественные (SEF) для внешних нужд
- Реализация двуязычного сайта с постраничным переключением языков
- Удаление значка печати из списка статей при сохранении его на странице статьи
Модернизация сайтов на Joomla! старых версий 1.5/2.5 до актуальной 3.6
Вместо предисловия задам риторический вопрос: надеюсь, никому не нужно объяснять, зачем вообще желательно обновлять Joomla! (да и вообще любые движки и платформы) до последней, актуальной версии? Это, прежде всего, необходимо для повышения информационной защищённости ресурса, его надёжности и отказоустойчивости, а также удобства использования административного интерфейса. Применительно к Joomla! переход на актуальную версию (по состоянию на 29.02.2016 это 3.4.8) хорош ещё и тем, что все последующие обновления будут автоматизированными и лёгкими, если доработка сайта будет вестись с архитектурной точки зрения правильно, то есть не затрагивая ядро, саму обновляющуюся платформу. В общем случае цена любого такого обновления (как в смысле трудоёмкости, так и денежной стоимости) напрямую зависит от того, как дорабатывался сайт, и если это делалось неправильно, то цена может быть довольно высока. Но даже при «гуманной» цене далеко не всегда удаётся убедить заказчика в необходимости такого обновления. Если же ваш заказчик уже убеждён, или вы сами владеете своим Joomla-ресурсом, и вас убеждать не нужно, то написанное ниже – для вас.
Старые версии Joomla!, вроде 1.5.х и 2.5.х, настолько сильно устарели относительно актуальной версии CMS с точки зрения архитектуры, программного интерфейса (API) и структуры базы данных, что о какой-либо автоматической модернизации речи быть не может. Я перепробовал множество разных инструментов миграции, как бесплатных, так и платных (например, CMS2CMS: Automated J! Upgrade, JUpgrade, Migrate Me, SP Transfer и SP Upgrade), но ни один из них применительно к реальным сайтам моих клиентов не дал сколько-нибудь значимого положительного эффекта – после всех них обновлённые сайты или вообще становились неработоспособными, или требовали такого «допила напильником», что сделать всё вручную с нуля было быстрее. В результате методом «научного тыка» я и пришёл к выводу, что действительно для всех подобных случаев проще делать модернизацию-миграцию вручную.
Сначала мы создаём новый, чистый сайт на последней версии Joomla, а потом перед нами стоят 2 основные задачи:
- миграция программного кода (на языке PHP);
- миграция данных (в MySQL-базе).
Миграция PHP-кода должна учитывать изменения не только архитектуры и API самой Joomla!, но и изменения, связанные с увеличением версии PHP, под которой новая Joomla! работает (для версий 3.x рекомендуется PHP версии минимум 5.3.10, тогда как для 2.5 это было PHP 5.2.4, а для 1.5 и подавно 4.3.10). В общем случае эта миграция делается так: старый PHP-код копируется на новый сайт под управлением новой, актуальной Joomla!, в файле .htaccess устанавливается php_flag display_errors on
и начинается пошаговая отладка с активным использованием информации с Joomla.org и StackOverflow.com. 😊 Ничего конкретнее я тут вам больше не скажу, так как мигрируемый PHP-код и его функциональность очень индивидуальны, универсального рецепта нет. Но если у вас что-то не получается и нужна моя профессиональная помощь – напишите мне по электронной почте или комментарий ниже.
Миграция SQL-данных должна учитывать изменения в схеме базы данных Joomla! и используемых на сайте компонентов. В общем случае эта миграция делается так: SQL-данные получаются из старой базы специальным SELECT
-запросом, который сопоставляет поля старой таблицы новым; результаты этого запроса сохраняются в виде SQL-сценария из INSERT
-команд вставки данных, который после некоторой доработки (не всегда, но может потребоваться) импортируется в новую базу данных, после чего может потребоваться ещё дополнительная обработка импортированных данных уже в там. За время тех миграций, что выполнил я, у меня накопились следующие наборы SELECT
-запросов для выгрузки данных старых баз в новые:
- SQL-запросы для выгрузки ключевых данных Joomla! 1.5.14 в 3.4.8;
- SQL-запросы для выгрузки ключевых данных Joomla! 1.5.21 с форумом Kunena в 3.4.8;
- SQL-запросы для выгрузки ключевых данных Joomla! 1.5.22 в 3.6.4;
- SQL-запросы для выгрузки ключевых данных Joomla! 2.5.28 с магазином JoomShopping в 3.4.5.
Если у вас что-то не получается и нужна моя профессиональная помощь – напишите мне по электронной почте или комментарий ниже.