Joomla. Миграция и импорт контента

Импорт в joomla 5

Joomla 3.x версия(и) - долго использовалась многими сайтами, и после обновления до 4-ой, а потом и до 5 - структура таблиц, поля этих таблиц, а также модули, компоненты и плагины перестали поддерживать новые версии, а некоторые и вовсе существовать.

Процесс перехода на новую версию joomla, или на платформу joomla из других CMS (к примеру, wordpress) или источников готового контента - крайне болезненный. В сети множество платных плагинов, миграторов, скриптов для импорта контента в новую версию joomla. Не факт, что они работают. Не факт, что они работают правильно.

К счастью joomla и похожие CMS используют основу для своего хранения mylsql СУБД. Далее будут представлены несколько mysql-сриптов с описаниями для импорта контента в joomla.

1. assets

Таблица <prefix>_assets хранит объекты используемые статъями (articles) и прочими типами контента. Если данные импортируются не из joomla - этот шаг можно пропустить.

1
2
3
4
5
6
7
8
## assets

ALTER TABLE <new_db>.<prefix>_assets
disable keys;
Replace INTO <new_db>.<prefix>_assets
SELECT *
FROM <old_db>.<old_prefix>_assets

2. categories

Таблица <prefix>_categories хранит категории ваших публикаций.

1
2
3
4
5
6
7
8
# categories
ALTER TABLE <new_db>.<prefix>_categories
disable keys;
Replace INTO <new_db>.<prefix>_categories
SELECT *
FROM <old_db>.<old_prefix>_categories

3. content

Таблица <prefix>_content - собственно основная таблица где хранятся статьи (article) и посты (posts) в joomla.

1
2
3
4
5
6
7
8
9
ALTER TABLE <new_db>.<prefix>_content
disable keys;

Replace INTO <new_db>.<prefix>_content(id, asset_id, title, alias, introtext, `fulltext`, state, catid, created, created_by, created_by_alias, modified, modified_by, checked_out, checked_out_time, publish_up, publish_down, images, urls, attribs, version, ordering, metakey, metadesc, access, hits, metadata, featured, `language`, note)
SELECT id, asset_id, title, alias, introtext, `fulltext`, state, catid, created, created_by, created_by_alias, modified, modified_by, checked_out, checked_out_time, publish_up, publish_down, images, urls, attribs, version, ordering, metakey, metadesc, access, hits, metadata, featured, `language`, note
FROM <db_old>.<old_prefix>_content


createdBy - важное поле - необходимо использовать вновь созданного администратора в новой бд:

1
2
3
select id from <new_db>.<prefix>_users
where name="your_admin_name"

После выполнения этих скриптов (успешного) ваши статьи будут в новой joomla, но не будут видны. Вместо Replace можно использовать Insert (даже нужно, чтобы не перетереть уже существующий контент).

4. workflow*

В joomla 5 появились новые таблицы workflow_*. Для того, чтобы можно было увидеть в админке joomla ваш контент, необходимо обновить/заполнить таблицу workflow_associations:

1
2
3
4
INSERT INTO jos_workflow_associations (`item_id`, `stage_id`, `extension`)
SELECT `id`, 1, "com_content.article"
FROM jos_content
WHERE `id` > 23 AND `id` < 71;

При полном копировании/импорте (если есть таблица workflow_associations):

1
2
3
4
5
6
ALTER TABLE <new_db>.<prefix>_workflow_associations
disable keys;
REPLACE INTO <new_db>.<prefix>_workflow_associations(item_id, stage_id, extension)
SELECT item_id, stage_id, extension
FROM <old_db>.<old_prefix>_workflow_associations

При полном копировании/импорте (если нет таблицы workflow_associations):

1
2
3
4
5
6
ALTER TABLE <new_db>.<prefix>_workflow_associations
disable keys;
INSERT INTO <new_db>.<prefix>_workflow_associations(item_id, stage_id, extension)
SELECT id, 1, "com_content.article"
FROM <old_db>.<old_prefix>_content

5. users

Для копирования пользователей можно воспользоваться: copy joomla3.10 user tables to joomla 5

Есть и другие типы контента, которые можно сохранить/перенести/импортировать. Но они не так критичны и много зависит от компонентов, которые выиспользуете, и шаблона joomla.