Поклонники системы управления контентом Joomla хорошо знают компонент K2, который предоставляет в распоряжение администратора сайта огромные возможности при заполнении контентом своего сайта. В большинстве случаев пользователи отдавали предпочтение данному компоненту, нежели стандартному менеджеру материалов. Соответственно, при обновлении CMS вставал законный вопрос: как мигрировать данные из Joomla 1.5 в Joomla 2.5 и Joomla 3.0? Данный материал позволит разобраться с этой несложной задачей.
Поклонники системы управления контентом Joomla хорошо знают компонент K2, который предоставляет в распоряжение администратора сайта огромные возможности при заполнении контентом своего сайта. В большинстве случаев пользователи отдавали предпочтение данному компоненту, нежели стандартному менеджеру материалов. Соответственно, при обновлении CMS вставал законный вопрос: как мигрировать данные из Joomla 1.5 в Joomla 2.5 и Joomla 3.0? Данный материал позволит разобраться с этой несложной задачей.


Условия задачи


У нас в наличии имеется два сайта. Первый работает под Joomla 1.5, второй под Joomla 3.0. На каждом установлен компонент K2.

На сайте под управлением Joomla 1.5 компонент заполнен категориями и материалами. Под Joomla 3.0 свежеустановленный абсолютно чистый от контента K2.

Задача — перенести данные из компонента K2 под Joomla 1.5 в компонент K2, который работает под Joomla 3.0


 

Этап 1. Экспорт базы данных


 

Первым делом мы должны открыть PHPMYADMIN и под логином и паролем для экспорта таблиц базы данных первого сайта, работающего под Joomla 1.5

Нам нет необходимости делать экспорт всех таблиц, а требуется сохранить на жесткий диск своего компьютера только те, которые относятся к компоненту K2

В окошке «Экспорт» удерживая клавишу CTRL на клавиатуре (или клавишу CMD под Mac OS) выделяем все записи, где в заголовке присутствует слово «k2».

Далее нажимаем кнопку «ОК» и сохраняем файл с расширением «sql» на жесткий диск своего компьютера. Для удобства дальнейшего повествования назовем этот файл «export.sql»
 


 

Этап 2. Меняем префикс


 

В версиях Joomla 1.0 и Joomla 1.5, как правило, использовался один и тот же префикс для таблиц базы данных - «jos_»

В дальнейшем ситуация изменилась и при установке системы управления контентом префикс автоматически генерируется, поэтому у двух разных сайтов на Joomla 3.0 он будет, скорее всего, разным.

Именно это обстоятельство требует от нас выполнения на данном этапе работы двух операций: мы обязаны выяснить префикс таблиц базы данных на сайте под Joomla 3.0, а в дальнейшем поменять его в нашем файле «export.sql»

Начнем с первого. Префикс можно выяснить после посещения административной панели. В Joomla 3.0 это будет «Система - Общие настройки»
 

Далее переходим на вкладку «Сервер» и в правой части экрана видим текстовое поле с одноименным названием.
 


 


 

Таким образом, мы узнали, что префикс таблиц на сайте под Joomla 3.0 у нас «qa24d_».

Возвращаемся к нашему файлу «export.sql» и открываем его на редактирование в любом текстовом редакторе, который поддерживает функцию автозамены.

И меняем в файле «jos_» на «qa24d_». Сохраняем файл и переходим к следующему этапу работы.


Этап 3. Импорт данных из компонента K2 в Joomla 2.5 и Joomla 3.0


Поскольку в Joomla 3.0 у нас уже установлен компонент K2 , то логично предположить, что в базе данных уже имеются в наличии таблицы, созданные данным расширением.

Они нам совершенно не нужны, поэтому мы должны сделать следующее:

Авторизоваться в PHPMYADMIN под логином и паролем, соответствующим базе данных сайта на Joomla 3.0

Далее открыть базу данных на редактирование, выделить все таблицы компонента K2 флажками и удалить их
 


 

На следующем шаге мы с вами должны перейти в раздел «Импорт», нажать кнопку «Обзор» и импортировать наш дамп под названием «export.sql», где как помним, меняли префикс и он на момент импорта должен совпадать с префиксом прочих таблиц

Если после импорта посетить административную панель компонента K2, то можно увидеть, что все категории и материалы чудесным образом перенеслись из Joomla 1.5 в Joomla 3.0

Однако поздравлять себя рано.

При попытке создать пункт меню, ведущий на категорию или материал, вполне вероятно от вас будут требовать авторизации, а после авторизации можно увидеть нечто вроде «403 Вы не авторизованы для просмотра этого ресурса» или «403 You are not authorized to view this resource» (в английском варианте).

Поэтому набираемся терпения и переходим к четвертому этапу нашей работы.
 

Этап 4. Настройка таблиц базы данных компонента K2


На четвертом этапе мы остаемся по прежнему в PHPMYADMIN. На этот раз мы переходим в раздел «SQL», где последовательно сделаем 4 запроса к нашей базе данных. Теперь обо всем по порядку.

Запрос 1. Меняем ID автора материалов в компоненте K2

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

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

Чтобы решить сие недоразумение, нам нужно выяснить ID администратора под Joomla 3.0. Для этого заходим в админ панели : Пользователи — Менеджер пользователей

И напротив пользователя с правами супер администратора изучаем внимательно колонку ID
 



 

Запоминаем ее значение и, если хотите, записываем в блокнот, ибо пригодится оно нам в недалеком будущем.

Выяснить ID пользователя, под которым создавались материалы в компоненте K2 под Joomla 1.5 можно либо подобным способом, либо просмотрев импортированную таблицу k2_items в PHPMYADMIN и в ней колонку «created_by»

Как правило, там стоит значение «62»

Таким образом, мы узнали, что ID администратора на сайте под Joomla 3.0 равно «304», а создавались эти материалы под пользователем с ID «62»

Открываем PHPMYADMIN, раздел «SQL» и вводим туда следующий запрос:

UPDATE `ваш префикс_k2_items` SET created_by = ID пользователя под Joomla 3.0 WHERE created_by = ID пользователя под Joomla 1.5

в моем случае запрос выглядел таким образом:

UPDATE `qa24d_k2_items` SET created_by = 304 WHERE created_by = 62


 

Чтобы запрос был обработан, нажимаем кнопку «ОК»


 



 

Запрос 2. Меняем ID автора, который вносил изменения в материалы в компоненте K2

Как известно, создать материал мало. Иногда приходится его изменять. И данные о пользователе, который вносил правки в материал, также хранятся в базе данных вашего сайта.

Поэтому мы должны провести аналогичную операцию и создать новый запрос к базе данных. Он будет выглядеть почти также:

UPDATE `ваш префикс_k2_items` SET modified_by = ID пользователя под Joomla 3.0 WHERE modified_by = ID пользователя под Joomla 1.5

в моем случае запрос выглядел таким образом:

UPDATE `qa24d_k2_items` SET modified_by = 304 WHERE modified_by = 62


 

Запрос 3. Меняем права на категории компонента K2


 

В Joomla 3.0 и Joomla 2.5 изменилась система прав для пользователей. Именно это обстоятельство может вызвать ошибки при отображении материалов и категорий компонента K2

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

Начнем с изменения прав для категорий. Для этого делаем следующий запрос к базе данных:


 

UPDATE `ваш префикс_k2_categories` SET access = 1 WHERE access = 0

в моем случае получилось следующее:

UPDATE `qa24d_k2_categories` SET access = 1 WHERE access = 0


 

Запрос 4. Меняем права на категории компонента K2


 

Завершающим штрихом станет запрос на изменение прав на материалы. Делаем следующий запрос:

UPDATE `ваш префикс_k2_items` SET access = 1 WHERE access = 0

в моем случае получилось следующее:

UPDATE `qa24d_k2_items` SET access = 1 WHERE access = 0


 

И.... В общем-то, все. Мы успешно перенесли данные из Joomla 1.5 в Joomla 3.0. Подобный рецепт работает и под Joomla 2.5

Надеюсь, данный материал окажется полезным для вас и облегчит трудовые будни вебмастера. На этом хочу откланяться.

Убедительно прошу вас, задавайте вопросы, не связанные с нашим интернет-магазином исключительно на форуме!

С уважением, Владимир Егоров