Upd: English version of the article: Joomla: Merge two sites into one using component J2XML.
Не так давно я имел помимо данного сайта еще один. По некоторым причинам решил присоединить второй сайт к этому в качестве отдельного раздела. При этом тот другой сайт появился даже раньше этого и имел несколько сотен статей, разделенных на полтора десятка категорий, а также полсотни зарегистрированных пользователей. На этом сайте к тому времени информации было не меньше. Задача: перенести наполнение сайта на другой так, чтобы создать объединенную структуру.
Нашелся отличный компонент J2XML, заточенный именно под подобную задачу. Он бесплатный, имеет гибкие настройки. Экспортирует связанную структуру материалов, категорий и пользователей с сайта-донора и интегрирует ее в структуру сайта-акцептора. До комплекта переносит еще и картинки в статьях, а также ссылки (WebLinks). Перенос, как следует из названия, осуществляется через XML-файлы. Детальному рассмотрению настроек и функционала компонента J2XML и посвящена эта статья.
Первым долгом по традиции напомню о необходимости резервного копирования файлов и базы данных сайта перед любыми изменениями, порекомендую сохранять промежуточные результаты и проделывать все вначале на локальном веб-сервере.
А теперь - погнали!
Скачайте с офсайта последнюю версию пакета J2XML (на момент написания - 3.1.rc2), соответствующую вашей версии CMS. Оба моих сайта работали под Joomla 2.5, именно этот вариант рассмотрен здесь. Отмечу лишь, что перед процессом я синхронизировал версии сборок - на обоих сайтах обновился до последних (на момент написания - 2.5.16).
Давайте заодно договоримся о терминологии. Сайт, информация с которого экспортируется, я буду называть сайт-источник, а тот, на который импортируется - сайт-приемник. А то донор и акцептор - слишком по-иностранному выходит )).
I. Экспорт с сайта-источника
Входим в админку сайта-источника. Там проделываем следующее.
- Устанавливаем пакет (package) стандартным образом через Менеджер расширений ->Установка. Если зайти теперь на вкладку Управление - видим аж пять расширений: инсталлятор пакета, компонент и еще 3 - библиотека, плагин J2XML Export/Send buttons и интерфейс командной строки J2XML CLI.
Последний из трех нам не пригодится, а вот остальные два можно обновить, если на офсайте есть более новые версии. После этого публикуем плагин J2XML Export/Send buttons.
- Идем в сам компонент, открываем Настройки и выставляем подходящие для наших целей. Интерфейс - только английский, но там в плане языка все достаточно просто и ясно.На сайте-источнике из настроек нас интересует только первая вкладка:
- Жмем Сохранить и закрыть, а следом - Article Manager. В меню Менеджера материалов появилась кнопка Export.
- В выпадающем меню Кол-во строк под списком материалов выбираем 'Все'. Ставим галки на нужные статьи, или выбираем все и снимаем галки с ненужных. Жмем Export. Генерируется и скачивается файл. Содержит он выбранные материалы со всеми установками, аккаунты пользователей-авторов, а также категории, но тоже не все, а только соответствующие экспортируемым материалам.
- Если есть желание или необходимость перенести дополнительные категории и/или пользователей, заходите в Менеджер категорий и Менеджер пользователей (в них также имеется кнопка Export) и экспортируйте нужные. Для импорта пользователей предусмотрены отдельные настройки, выставляемые впоследствии на сайте-приемнике. Также, если вы используете компонент Ссылки (Weblinks), имейте в виду, что J2XML позволяет переносить и их - кнопка Export присутствует и в интерфейсе Менеджера ссылок.
II. Импорт на сайт-приемник
Переходим на сайт-приемник. В его админке проделываем следующие действия.
- Установка пакета и вход в Настройки - как на сайте-источнике. Настраиваем опции для импорта.Итак, как видите, значения всех параметров устроили меня по умолчанию. Случаи, когда было бы целесообразно их поменять, я попытался упомянуть выше.
- Теперь остался сам импорт. Жмем Choose File, выбираем файл с материалами и кликаем Open, а следом - кнопку Import. Дожидаемся конца процедуры и получаем лог ее выполнения. Если настройки соответствовали задумке, результат должен быть успешным.
- Если отдельно был выполнен экспорт несвязанных со статьями пользователей, категорий и ссылок - повторяем предыдущий шаг для соответствующих файлов.
Что можно отметить в заключение? Работает компонент отлично - шустро и без глюков. Если бы он еще и меню переносил - было бы совсем хорошо. Также нет возможности синхронизировать сторонние расширения, связанные с идентификаторами переносимых элементов. Например, пользователи на сайте-приемнике получили новые IDs, и комментарии зарегистрированных пользователей в JComments мне лично пришлось привязывать к ним вручную. Благо дело, их было немного - 30 с небольшим, а если их сотни? Пришлось бы искать, а то и писать скрипт переноса. Почему бы разработчикам не сделать этого, ведь JComments - наше всё?! Да и скрипт такой не представляется сложным.
Но это так, перфекционизм. А если без него, то спасибо разрабам J2XML - бесплатного, полезного, быстрого и надежного компонента для переноса наполнения с одного сайта на другой и грамотного интегрирования этого нового контента в имеющуюся структуру.
Комментарии
Ошибка
File format unknown. Impossible to import file.