Добавить в FacebookДобавить в Google BookmarksДобавить в TwitterДобавить в OdnoklassnikiДобавить в Vkcom

Как перенести сайт с joomla 2.5 на joomla 3


Буквально несколько дней назад мне необходимо было перенести сайт с движка joomla 2.5.x на joomla 3.x. На официальном сайте joomla (https://docs.joomla.org) было рекомендовано произвести миграцию, удалив старые, несовместимые с joomla 3.x, версии сторонних компонентов и пакетов. Я несколько раз уже делал подобную миграцию раньше и она проходила успешно. Однако миграция этого сайта происходила с ошибками, после которых, либо сайт не запускался вообще, либо админка работала частично. В связи с этим, я принял решение перенести контент и настройки старого сайта на свежеустановленную joomla 3.4.1.

Для этого я создал на хостинге тестовый поддомен и установил туда последнюю версию joomla. При установке joomla 3.4.1 я заполнил название, email администратора, префикс базы данных и другие параметры идентично старому сайту. Очень важно при заполнении параметров базы данных создать такой же префикс таблиц как на старом сайте. Например, в старой базе данных префикс был psdfe_. Соответственно, и в новой базе данных также должен быть префикс psdfe_. После установки я, в первую очередь, перенес файлы настроек .htaccess, configuration.php, robots.txt  и файлы yandex и google webmaster, тем самым перенеся настройки SEF и другие. Далее, я установил на новый движок свежие, совместимые с joomla 3.x компоненты, плагины, модули. И вот после этого, приступил к переносу контента. Для этого я создал промежуточную базу данных. Открыл в phpmyadmin базу данных старого сайта, выделил все таблицы и нажал экспорт. Таким образом я экспортировал БД в файл .sql на мой компьютер. После этого, я открыл только что созданную промежуточную базу данных и импортировал туда старую БД. Делается это так. В phpmyadmin, открыв промежуточную БД, Вы становитесь на название промежуточной БД и нажимаете кнопку импорт. Выбираете файл .sql  старой БД и жмете кнопку Ок. Таким образом Вы получаете полную копию БД старого сайта, с которой можно безопасно производить манипуляции. Приступим к самому интересному. В промежуточной БД (копия БД старого сайта) нам интересны таблицы psdfe_content (у Вас будет другой префикс), psdfe_menu, psdfe_menu_types и psdfe_categories. В дальнейшем, Вы должны быть очень внимательны. Создайте, на всякий случай,  вышеуказанным способом резервную копию БД свежеустановленной joomla 3.x. Итак у Вас открыты в phpmyadmin обе БД - промежуточная и нового сайта. Выбираете таблицу psdfe_content и нажимаете ссылку "структура". После этого сравниваете структуру таблиц в обеих БД. При сравнении я обратил внимание что в таблице промежуточной БД (копия БД старого сайта) есть колонки title_alias, sectionid, mask, parentid, которых нет в аналогичной таблице БД нового сайта. То есть они лишние. Я удалил их из промежуточной БД (копия БД старого сайта) . Если этого не сделать, то mysql не сможет выполнить импорт, по причине ошибок запроса при попытке вставить несуществующие столбцы в таблицу БД нового сайта.

Итак мы привели таблицы в промежуточной БД (копия БД старого сайта) к структуре, идентичной структуре таблиц БД нового сайта. Теперь мы открываем таблицу psdfe_content промежуточной БД (копия БД старого сайта) и выделяем галочками все таблицы внутри нее.

И нажимаем экспорт. Получаем, например, файл content.sql (я назвал его так). Таблицы psdfe_content содержат все статьи старого сайта. После этого, открываем БД нового сайта, выделяем таблицу с таким-же названием psdfe_content и нажимаем "очистить".

Это делается для того, чтобы случайно не совпали id старых таблиц с id новых таблиц при импорте. Вы просто очищаете базу данных нового сайта от каких-либо статей. Все готово. Снова открываете таблицу (она уже пустая) psdfe_content, нажимаете импорт, выбираете файл content.sql и переносите все статьи старого сайта в новый. То же самое повторяете и с остальными таблицами, которые содержат меню, категории и т. д. Схема действий такова - открываете, приводите таблицы к одной структуре (структуре таблицы БД нового сайта), экспорт/импорт. Далее необходимо скопировать все картинки (не системные картинки) относящиеся к материалам из папки /images старого сайта в папку /images нового сайта. После этого, открыв админку нового сайта, Вы увидите меню, категории, и материалы. И тут, в админке нового сайта, обязательно нужно последовательно открыть менеджер меню, менеджер категорий, менеджер материалов, выбрать все материалы и нажать кнопку "Пакетная обработка". Откроется окно в котором все пункты заполнены так, чтобы не производить изменений. Просто нажмите кнопку "Выполнить" и обработка перестроит все материалы.

Если вы не сделаете этого, то при открытии и редактировании материала он не будет сохраняться выдавая ошибку.

Было дело, мне пришлось переносить материал из БД joomla 1.5 в БД joomla 3. Там структуры сильно отличаются. В результате переноса все поля access таблиц с материалами были равны нулю. Для того, чтобы во всех 350-ти материалах проставить признак access равным единице пришлось написать простенький php-скрипт:
// Соединение с сервером БД
mysql_connect("хост", "юзер", "пароль") or die (mysql_error ());
// Выбор БД
mysql_select_db("база данных") or die(mysql_error());
$id=1;
while ($id<350) {
$strSQL = "UPDATE `dfdhf_content` SET "; //вместо dfdhf поставить Ваш префикс таблиц
$strSQL = $strSQL . "access= '1' ";
$strSQL = $strSQL . "Where id =" . $id;
// SQL-оператор выполняется
mysql_query($strSQL);
$id++;
}
// Закрыть соединение с БД
mysql_close();
echo "ok";

Также, обратите внимание что некоторые шаблоны, написанные под joomla 2.5 не работают под joomla 3.x поскольку используют вызовы старых функций joomla 2.5, которых нет в joomla 3.x. Были случаи мне приходилось заменять эти старые функции в шаблоне на эквивалентные новые, которые используются в joomla 3.x. В данной ситуации, поскольку была идея еще и обновить внешний вид сайта, я написал под него совершенно новый шаблон. После всего этого я просто перенес готовый сайт на новом движке в папку основного домена. В итоге я получил сайт на joomla 3.x с полностью скопированным контентом старого сайта. Пожалуй на этом все. Таким образом можно переносить и настройки компонентов, модулей. плагинов. Или переносить контент сайта с движка Joomla на движок Wordpress. И вообще извращаться в силу своего воображения.  

Желаю Вам удачи и успехов.

Автор: Darkeye.  

Еще интересное в сети.

  

 

Похожие материалы

Перейти к ленте статей

Комментарии   

#22 Darkeye 27.01.2017 17:06
Про переезд на ssl статей и так масса. Не вижу смысла повторяться. Блог на ssl не перевожу по причине необходимости аренды айпи.В данном случае это нецелесообразно . Насчет капчи так мне в проектах хватало reCapcha.
Цитировать
#21 Алексей 27.01.2017 11:43
Благодарю за статью! А есть ли у вас статьи про переезд на ssl?

И думали ли Вы о смене капчи? например на бесплатную key kapcha
Цитировать
#20 Darkeye 25.01.2017 09:12
В статье просто описана необходимая последовательно сть действий. У меня поначалу тоже были затыки, чаще всего не учитывал некоторые нюансы. Это делать нужно очень внимательно. Если хостер перенес то Вам повезло, обычно хостеры этого не делают :-).
Цитировать
#19 Darkeye 25.01.2017 09:08
Если материалы успешно редактируются и отображаются то, собственно, задача выполнена. :-).
Цитировать
#18 Владимир 25.01.2017 07:14
Спасибо за статью, но у меня что-то затыки постоянные какие-то были, поэтому мне мой хостер Handyhost все сам перенес)
Цитировать
#17 Алексей 24.01.2017 15:19
Материалов очень много, около 700. Если материалы успешно редактируются, и отображаются, значит должно быть все нормально? Или вы считаете, что всё таки стоит разобраться?
Цитировать
#16 Darkeye 24.01.2017 15:02
Для пакетной обработки чего-то не хватает. Может язык не проставился. Может еще какой признак. Если статей немного можно и руками. Так сразу сказать сложно не видя структуры таблиц.
Цитировать
#15 Алексей 24.01.2017 14:53
Открыл и нажал сохранить и закрыть каждую категорию. При попытке нажать пакетная обработка всех материалов "Предупреждение

Пакетная операция завершилась с ошибкой: Недостаточно данных для выполнения пакетной операции".

Но материал вроде успешно сохраняет. Несколько выборочных материалов успешно сохранились. На пакетную обработку забить?
Цитировать
#14 Darkeye 24.01.2017 14:27
Тогда нужно открыть каждую категорию и нажать сохранить и закрыть. Вообще в тексте написана последовательно сть обработки.
Цитировать
#13 Алексей 24.01.2017 14:13
Но категории есть... в менеджере категорий они светятся
Цитировать

Добавить комментарий