Обновление Joomla! 1.5 до Joomla! 3.0

В этой статье Я хочу подробно описать миграцию с Joomla! 1.5 на Joomla! 3.0 на примере своего же собственного сайта. Еще совсем недавно он работал на Joomla! 1.5, однако с выходом Joomla! 3.0 у меня появилась навязчивая идея ее опробовать. И не так просто поставить на локалхост и потыкать, а реально запустить на ней сайт. Кроме моего сайта добровольцев не было, поэтому сразу после выхода Joomla! 3.0.1 Я начал думать как мне лучше обновиться. И не просто обновиться, а обновиться так, чтобы сохранились все адреса материалов и категорий, не говоря уже о них самих. Для этого нужно было сохранить все ID материалов, категорий и прочего. Иными словами обновиться правильно и без мусора в базе данных, который мог бы появиться при обновлении с помощью компонента JUpgrade. То есть Я хотел если не идеального обновления, то почти. Мне нужен был только перенос материалов, категорий и ссылок с сохранением всех URL и ID. В общем если вы так же хотите чистого сайта на Joomla! 3.0, но с вашими материалами и URL — добро пожаловать под кат...


Прежде чем вы начнете читать этот топик, хочу заметить что этот способ прекрасно подойдет для сайтов, у которых кроме контента особо ничего нет, так как Я не затрагивал сторонние расширения, но в принципе таким же методом можно обновиться и вместе с JoomGallery и прочими компонентами, только со сторонними расширениями все же придется использовать JUpgrade, так как компонентов экспорта и импорта данных для них нет. Грубо говоря, ниже Я опишу, как обновиться с помощью компонента J2XML Importer.

Из компонентов у меня был только XMap, который к сожалению еще не вышел для Joomla! версии 3.0, поэтому Я быстренько сгенерировал последнюю свежую карту сайта в файл XML вот этим способом, сохранил как файл sitemap.xml и аккуратно положил в корень свеже установленной на поддомене Joomla! 3.0. Установку Joomla! 3.0, Я думаю, описывать не стоит, ведь она проходит в три этапа. Но все же последовательность действий Я опишу как можно подробнее. Разобьем статью на части… Кстати чуть не забыл! Мы совершим фактическое обновление буквально за пять минут. Это конечно же ваши посетители и пользователи будут думать, что обновление длилось не более пяти минут, ведь сайт на Joomla! 3.0 тут же заработает на вашем домене, на котором вы и планировали обновление. Тем самым вы не отпугнете пользователей и посетителей страшным процессом обновления. ;) А теперь начнем:

1. Подготовка Joomla! 3.0

Итак, устанавливаем Joomla! 3.0 обычным нам способом. Желательно на поддомене. Не ставьте на localhost ничего вообще, так как могут быть проблемы в переносе контента. Выбираем абсолютно любой префикс таблицы базы данных и в качестве администратора создаем пользователя с логином, которого не было на сайте с Joomla! 1.5. Можете установить русский язык и так далее, но больше особо ничего не меняйте. Установили и закрыли. Не создавайте ни категорий ни пользователей ни материалов, это все можно будет сделать потом, не торопитесь. Теперь займемся переносом нужных нам данных...

2. Экспорт/Импорт

В JED Я нашел очень хороший компонент импорта и экспорта всего, что нам нужно. И зовут его J2XML Importer. Этот плагин устанавливается на Joomla! 1.5, настраивается соответствующим образом и экспортирует все, необходимые нам данные, такие как пользователи, материалы, ссылки, категории, контакты с сохранением всех ID(!), что нам и нужно. Вообще подробную инструкцию о переносе данных можно почитать прямо на странице скачивания компонента. Но вкратце Я так же опишу, как экспортировать и импортировать данные. Устанавливаем на Joomla! 1.5 этот компонент, версии 1.5.x, версии выше — для Joomla! 2.5. После установки включаем системный плагин компонента, который так же и называется. Настройки не трогаем. Переходим сразу к пользователям и видим, что помимо кнопок создать удалить и прочих появились кнопки установленного компонента. Нас интересует Export. Отмечаем нужных нам, или всех, пользователей (чтобы отметить всех нужно в отображении выбрать все, а потом отметить всех пользователей) и нажимаем эту волшебную кнопку Export. После нажатия вам предложит ваш же сайт скачать xml файл, в котором и сохраняются все ваши пользователи. Переименуйте его лучше в users. Повторяем процедуру для материалов, категорий, ссылок и контактов. Разделы экспортировать не нужно! Все экспортировали? При экспорте переименовали файлы, чтобы не запутаться? Отлично — забыли про Joomla! 1.5. Теперь самое интересное — импорт. Однако появляется загвоздка — компонент импорта не годится для Joomla! 3.0. Вот тут мы будем изобретать велосипед. Создаем еще одну базу данных и поддомен. Устанавливаем на этот поддомен и эту базу Joomla! 2.5. Вот тут не забываем префикс базы данных указать точно такой же как и в случае с Joomla! 3.0! А так же пользователя создаем идентичного. Больше вообще ничего не делаем. Даже русский язык ставить не нужно. Устанавливаем только компонент J2XML Importer. Здесь так же нужно быть внимательным: нужно перейти в настройки компонента и во вкладке Advanced установить свойство параметра Keep ID в положение Yes. Это очень важно, ведь мы хотим сохранить все URL, не правда ли?

Импорт в J2XML Importer

На этом настройка компонента для Joomla! 2.5 закончена. Можно импортировать данные. Желательно в следующей очередности: Пользователи > Категории > Материалы > Ссылки > Контакты. После этого необходимо убедиться, что весь процесс прошел успешно, просто на выбор сравните несколько ID материалов в Joomla! 1.5 и в Joomla! 2.5. Уверены, что все в порядке? Прекрасно, переходим к следующему шагу — обновление...

3. Обновление Joomla! 2.5 до Joomla! 3.0

Тут все просто — нам нужно обновить Joomla! 2.5 до Joomla! 3.0 встроенным компонентом обновления Joomla. Однако сперва нужно удалить компонент импорта J2XML Importer. Удаляем его обычным способом. Далее выбираем в настройках компонента обновления STS версии движка, сохраняем, обновляем страницу и видим, что есть возможность обновиться до Joomla! 3.0.x. Внимание! Перед обновлением убедитесь, что у вас на хостинге работает PHP 5.3.x, иначе обновление может пройти не совсем удачно. Итак, нажимаем кнопку обновить и ждем. Сразу станет ясно успешно или не совсем мы обновились. Должно быть все как по маслу ;). Все. С этим шагом покончили. Теперь переходим к работе с базами данных...

4. Базы Данных

Вот зачем мы устанавливали чистую Joomla! 3.0 и в обоих случаях устанавливали одинаковый префикс для баз данных. Теперь нам нужно открыть обе базы данных, для этого открываем их в PHPMyAdmin. Затем переходим в таблицу assets причем в обоих базах. В базе данных чистого сайта, без материалов считаем количество строк, которые уже есть, ну или просто смотрим в обзоре таблице. В базе данных с материалами отсчитываем такое же количество строк и отмечаем после них все строки. Затем, отметив их, внизу, выбираем пункт «С отмеченными» > «Экспорт». И экспортируем эту таблицу себе на комп. Затем заходим в таблицу categories и отмечаем там все строки и экспортируем их. То же самое делаем с таблицами contact_details, content, content_frontpage, content_rating,  users, user_profiles, weblinks. Обратите внимание, что если вы не сохраняли какую либо часть данных, например контакты, то их экспортировать не нужно. Итак после того, как экспортировали все необходимые нам данные открываем базу данных чистого сайта и, открыв соответствующие таблицы, импортируем туда соответствующие дампы экспортированных только что таблиц. Экспорт и импорт дампов должен пройти без проблем. После этого открываем админку нового сайта на Joomla! 3.0, в который мы только что импортировали весь контент со старого сайта и проверяем, все ли нормально прошло.

5. Меню и прочие мелочи

После того, как удостоверились в том, что импорт данных в базу данных прошел успешно нам необходимо создать соответствующие пункты меню, так как компонент не импортировал их, к сожалению. Алиасы пунктов меню должны быть идентичными старым, чтобы сохранить URL. Затем нужно разобраться  с категориями, так как могли быть импортированы и разделы. И они стали родительскими категориями. Потом проверяем URL страниц. Не обязательно всех конечно, но по несколько штук из каждой категорий. Так же потом следите за отчетами ошибок, а если у вы пользуетесь Яндекс вэбмастером и/или Google вэбмастером, то вам будет проще следить за ошибками, которые возможно появятся. Я имею ввиду ошибки 404. Не забудьте так же перенести изображения. Можно всю папку images. Кроме того обратите внимания на ссылки. Их URL изменились, так что их так же придется изменять вручную. Если вы их не использовали — вам же лучше. Так же перенесите файлы вэбмастеров если они у вас есть, ну и прочие файлы. Про метаданные и все прочее так же не забываем. В общем у нас новый, чистый сайт, только со старым контентом и сохраненными URL.

6. Спокойной работы

После успешного обновления и переноса данных можно заняться работой над сайтом — дизайн, структура, сторонние расширения и так далее. В общем реализуйте все ваши задумки причем абсолютно спокойно. Ну конечно если контент на Вашем сайте регулярно обновляется, то можно заранее собрать дизайн и конечно неделю сайт обойдется без обновлений. В зависимости от того, сколько вы будете работать над сайтом. А вообще все данные можно перенести непосредственно после того, как вы закончите техническую часть обновленного сайта. Тогда не будет паузы в обновлении контента на сайте.

7. Обновление сайта за пять минут

После того, как все закончили, нужно наш новый сайт перенести с поддомена на действующий домен. Это происходит в зависимости от того, какой у вас хостинг, но обычно можно просто изменить папку файлов домена и все. После этого нужно в configuration.php указать public$live_site = 'http://www.mysite.com';. Так же изменяем пути к папкам логов. В общем стандартная процедура сайта с домена на домен. Вот и получится, что для посетителей сайт обновлялся всего несколько минут.

Подведем черту

Конечно после того, как компонент импорта контента начнет поддерживать Joomla! 3.0 пункты 3 и 4 нам будут не нужны, но пока это единственный вариант чистого обновления. Таким образом мы обновили свой сайт с Joomla! 1.5 до Joomla! 3.0 «чистым» способом. База не засорилась и мы четко контролировали процесс. Можно еще кстати провести оптимизацию БД. В итоге у нас нет мусора, мы не прибегали к таким сложным компонентам как JUpgrade и получили абсолютно чисто установленную Joomla! 3.0 со всем сохраненным контентом и URL. Так же мы перешли на Bootstrap, который позволяет реализовать на сайте адаптивный дизайн, что конечно же добавит вашему сайту мобильных пользователей.

Но лично Я, как уже говорил выше, не рекомендую пока обновляться на Joomla! 3.0

P.S. Что же касается моих впечатлений о Joomla! 3.0. В целом мне очень понравилось, но недочеты все таки есть. Меня подверг в ужас например обновленный SEF плагин, который криво вставляет канонические ссылки. Интерфейс мне понравился. Удобно, хоть и непривычно. Однако в техническом плане она еще сырая.

На этом все. Надеюсь материал был полезным. Именно так Я и обновил свой сайт www.yazov.com с Joomla! 1.5 до Joomla! 3.0 и он прекрасно функционирует.

14 комментариев
А почему не использовал компонент jUpgrade? extensions.joomla.org/extensions/migration-a-conversion/joomla-migration/11658Вроде он для миграции даже удобней… сейчас id-шники он тоже сохраняет.
Вообще Я попробовал сначала мигрировать с его помощью, однако он перенес не все материалы а только 2/3, напутал в настройках пунктов меню и нагадил в таблицах контента категорий и проч. Потом почитал отзывы на JED и забил на него… :)
странно я его использовал недавно… все отлично прошло… без всяких проблем мигрировалось… все материалы целы… и id целы самое главное вся структура сохранена в том числе и модули
Жуть. Простенькие сайты фирм в 10-30 страниц наверно проще руками скопировать статьи. А в целом хороша статья. Хотел плюсануть, но не получается почему-то.