Решение проблемы с дублированием шаблона в Joomla

С тех пор как вышел релиз Joomla 2.5, мы сталкивались с проблемой «дублирования шаблона», которая проявлялась, при обновлении или установке. Так как шаблоны – это важный элемент в работе и многие пользователи устанавливают их, проблема вызвала немалое замешательство.

Этот баг в платформе Joomla нашли и исправили вскоре после выхода версии 2.5.0, но в текущей версии Joomla 2.5.2 эта проблема сохраняется, потому что Joomla platfrom fix не был интегрирован в код CMS. Даже, когда код исправят в базе данных, это не исправит многочисленных копий записей в базе данных, которые появляются из-за файла инсталляции шаблона с багами.

Для решения проблемы, мы сделали простой плагин для Joomla, который пропатчивает файл инсталляции базовых шаблонов и добавляет обновленный код платформы, удаляя лишние ошибочные записи из базы данных. При установке, плагин делает свою работу и не будет вмешиваться, до тех пор пока не использовать опцию “Patch Every Page-Load” в параметрах плагина. Если включить ее, плагин включит патч и попытается очистить базу данных при каждой перезагрузке профиля администратора. Таким образом, включив эту опцию, сохранившись и отключив ее, можно обновить процесс, если это требуется. Если нужно восстановить оригинальный забагованный файл, можно просто удалить плагин.

Все что нужно сделать для исправления проблемы в Joomla 2.5 – это скачать специальный плагин и установить его.

ВАЖНО! Плагин предназначен только для Joomla 2.5 и решает проблемы с версиями 2.5.0, 2.5.1, 2.5.2, 2.5.3. Попробуйте его сначала в тестовом режиме и делайте бэкап файлов Joomla, а также базы данных перед установкой. Мы протестировали плагин, но его использование остается на вашей совести, так как мы не можем предвидеть все возможные варианты его поведения.

Технические вопросы

Для тех, кто хочет знать «начинку» патча, смотрите описание ниже. Основное взято из функции install() и можно увидеть, что поле $element не цитируется, что вызовет ошибку запроса. Запрос создается, но не задается объектом базы данных. Эти недостатки исправляются в новой версии.

На форуме возник вопрос, будет ли плагин поддерживать новые версии Joomla. Плагин исправляет базу данных только во время его установки или обновления. Так что он используется однократно. При выходе новой версии Joomla, файл не изменится и все исправления останутся в силе. Если выйдет обновление Joomla и файл будет включен, есть вероятность того, что все проблемы будут решены. В случае установки плагина в новую версию, где все проблемы были исправлены, можно использовать проверку md5 и патч не будет работать, если нужный поврежденный файл не найден. Проще говоря, плагин безопасен при всех возможных вариантах. Единственная проблема может возникнуть, если Joomla обновляется вместе с файлом, но баги в нем не будут исправлены. В таком случае, мы обновим плагин. Надеемся, эту ситуацию подробно рассмотрят в Joomla 2.5.3.