ADBLOCK_MSG
Joomla: Сливаем два сайта в один при помощи компонента J2XMLОпубликовано: 27.11.2013, 20:26 Автор: Ogri Просмотров: 36880
Не так давно я имел помимо данного сайта еще один. По некоторым причинам решил присоединить второй сайт к этому в качестве отдельного раздела. При этом тот другой сайт появился даже раньше этого и имел несколько сотен статей, разделенных на полтора десятка категорий, а также полсотни зарегистрированных пользователей. На этом сайте к тому времени информации было не меньше. Задача: перенести наполнение сайта на другой так, чтобы создать объединенную структуру.
Нашелся отличный компонент 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.
- Идем в сам компонент, открываем Настройки и выставляем подходящие для наших целей. Интерфейс - только английский, но там в плане языка все достаточно просто и ясно.
На сайте-источнике из настроек нас интересует только первая вкладка:
- Export. На ней имеются следующие опции:
- Images - переносить ли картинки к статьям. Если оставить 'Да', то изображения будут включены в xml-файл в закодированном виде и раскодируются на сайте-приемнике в соответствующие папки. В том случае, если папки там отсутствуют, они будут созданы. Возможный минус здесь - размер полученного файла. Если много больших имиджей - даже компрессия не поможет. У меня было немного, поэтому я оставил эту опцию активной. В обратном случае лучше постепенно перенести картинки вручную.
- Users - соглашаюсь. В этом случае в файл будут добавлены учетные записи пользователей, но не всех, а лишь авторов статей, выбираемых для переноса. Подробнее - в описании опции Keep author вкладки Content на сайте-приемнике.
- Compress - сжимать ли файл. Имеет смысл при большом количестве информации.
- Export. На ней имеются следующие опции:
- Жмем Сохранить и закрыть, а следом - Article Manager. В меню Менеджера материалов появилась кнопка Export.
- В выпадающем меню Кол-во строк под списком материалов выбираем 'Все'. Ставим галки на нужные статьи, или выбираем все и снимаем галки с ненужных. Жмем Export. Генерируется и скачивается файл. Содержит он выбранные материалы со всеми установками, аккаунты пользователей-авторов, а также категории, но тоже не все, а только соответствующие экспортируемым материалам.
- Если есть желание или необходимость перенести дополнительные категории и/или пользователей, заходите в Менеджер категорий и Менеджер пользователей (в них также имеется кнопка Export) и экспортируйте нужные. Для импорта пользователей предусмотрены отдельные настройки, выставляемые впоследствии на сайте-приемнике. Также, если вы используете компонент Ссылки (Weblinks), имейте в виду, что J2XML позволяет переносить и их - кнопка Export присутствует и в интерфейсе Менеджера ссылок.
II. Импорт на сайт-приемник
Переходим на сайт-приемник. В его админке проделываем следующие действия.
- Установка пакета и вход в Настройки - как на сайте-источнике. Настраиваем опции для импорта.
- Вкладка Export нас здесь, понятно, не интересует. Посмотрим настройки на остальных.
- Вкладка Import:
Здесь все достаточно прозрачно. Импортировать ли изображения, категории, пользователей и ссылки. Какие выбирать значения параметров - решается по результатам анализа содержимого обоих сайтов. Также эти значения должны сочетаться с некоторыми параметрами из следующей вкладки. Рассмотрим ее подробно.
- Вкладка Content содержит следующие опции:
- Keep Ids - очень важный параметр. Если на сайте-приемнике, как в моем случае, есть свой контент, то лучше оставить 'Нет'. В этом случае идентификаторы импортируемых элементов добавляются к существующим по принципу автоинкремента. В этом случае параметры вкладки Import игнорируются, кроме тех, которым вы присвоили значение 'Нет' - тогда соответствующие группы просто не импортируются. Перезапись существующего наполнения новым происходит только если сохранять Ids.
Моя задача - как раз добавить новые элементы, сохранив существующие. Именно поэтому я оставил значения опций на вкладке Import дефолтными, равно как и Keep Ids - 'Нет'.
- Access Level. Зависит от вашего желания. Можно сбросить уровень доступа для всех добавляемых материалов на какой-нибудь один, а можно оставить оригинальный. Меня устроил второй вариант.
- State - состояние: опубликован или нет. Здесь та же логика. Сохраняю исходное значение.
- Keep author - если 'Да', сохраняет авторов статей, даты последнего изменения и количество изменений. Заодно, если на сайте-источнике на вкладке Export было выбрано Users, здесь будут добавлены учетки пользователей - авторов статей. Будут ли заменены аккаунты пользователей с такими же идентификаторами - зависит от выбора Keep Ids выше, а также от значения параметра Users на вкладке Import. Интересно здесь, что email пользователя алгоритм тоже считает идентификатором.
Значение и этой опции оставляю по умолчанию - 'Да'.
- Keep category - 'Да'. В этом случае категории, соответствующие статьям, автоматически будут добавлены в список категорий. И снова - перезаписывать ли существующие, если такие будут найдены, зависит от значений Keep Ids и параметра Categories предыдущей вкладки.
- Category - используется только если Keep category установлено в 'Force to'. Всем статьям, соответственно, присваивается выбранная категория.
- Оставшиеся четыре параметра не требуют детального объяснения - сохранять ли атрибуты, метаданные и рейтинг, а также избранные статьи.
- Keep Ids - очень важный параметр. Если на сайте-приемнике, как в моем случае, есть свой контент, то лучше оставить 'Нет'. В этом случае идентификаторы импортируемых элементов добавляются к существующим по принципу автоинкремента. В этом случае параметры вкладки Import игнорируются, кроме тех, которым вы присвоили значение 'Нет' - тогда соответствующие группы просто не импортируются. Перезапись существующего наполнения новым происходит только если сохранять Ids.
- Следующая вкладка - Users.
Пригодится только если экспортировались пользовательские аккаунты из Менеджера пользователей сайта-источника отдельным файлом. Здесь всего два параметра, которые можно сохранить по умолчанию:
- Keep Ids - 'Нет', как и для контента.
- Keep attribs - имеет смысл сохранить атрибуты добавляемых пользователей, если нет особых соображений в пользу противоположного выбора.
- Наконец, последняя вкладка Advanced может быть смело проигнорирована. Debug - отключен, Remote folder в описываемом методе не используется.
Итак, как видите, значения всех параметров устроили меня по умолчанию. Случаи, когда было бы целесообразно их поменять, я попытался упомянуть выше.
- Теперь остался сам импорт. Жмем Choose File, выбираем файл с материалами и кликаем Open, а следом - кнопку Import. Дожидаемся конца процедуры и получаем лог ее выполнения. Если настройки соответствовали задумке, результат должен быть успешным.
- Если отдельно был выполнен экспорт несвязанных со статьями пользователей, категорий и ссылок - повторяем предыдущий шаг для соответствующих файлов.
Что можно отметить в заключение? Работает компонент отлично - шустро и без глюков. Если бы он еще и меню переносил - было бы совсем хорошо. Также нет возможности синхронизировать сторонние расширения, связанные с идентификаторами переносимых элементов. Например, пользователи на сайте-приемнике получили новые IDs, и комментарии зарегистрированных пользователей в JComments мне лично пришлось привязывать к ним вручную. Благо дело, их было немного - 30 с небольшим, а если их сотни? Пришлось бы искать, а то и писать скрипт переноса. Почему бы разработчикам не сделать этого, ведь JComments - наше всё?! Да и скрипт такой не представляется сложным.
Но это так, перфекционизм. А если без него, то спасибо разрабам J2XML - бесплатного, полезного, быстрого и надежного компонента для переноса наполнения с одного сайта на другой и грамотного интегрирования этого нового контента в имеющуюся структуру.
Комментарии
Ошибка
File format unknown. Impossible to import file.
В комментарии выше человек написал, что у него получилось переносить даже "не по 50 шт материала, а по 10". У меня получилось перенести одним махом около 200 материалов. У вас их "2500 тысячи" - так кто вам мешает переносить их по частям?
Ваши комменты были бы полезны, если бы не являлись по сути агрессивным рекламированием вашего сайта. В контексте обсуждения ваша ссылка не является полезной.
И да, конечно, я собираю данные, чтобы потом подороже продать их спецслужбам. Ваши данные станут вишенкой на торте.