Авторизация

Как перенести контент со старой UMI на новую UMI CMS с помощью umiDump

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

В таких случаях приходится покупать новый ключ и переносить весь контент со старой на новую систему.

В UMI CMS для этих целей есть классы xmlExporter и xmlImporter (в формате umiDump). С помощью umiDump можно вытащить наверно (точно не знаю, не пробовал) все данные из CMS.

ИЗ ОССОБЕННОСТЕЙ следует отметить что все макросы с контенте будут отработаны, т.е. все ссылки типа % content get_page_url()% будут преобразованы в ссылки или % webforms add()% будет вставнена форма.

Для начала экспортируем, я экспорт разбиваю на несколько этапов, каждую категорию вытаскиваю по отдельности, но это можно не делать и вытаскивать сразу всё:

header("Content-type: text/html; charset=utf-8");
include "./standalone.php";
$select = new selector('pages');
$select->where('hierarchy')->page(2234)->childs(4);
$pages = $select->result();
$exporter=new xmlExporter("umiDump20");
$exporter->setShowAllFields(true);
$exporter->addElements($pages);
$result=$exporter->execute();
$result->save('./sys-temp/export/page_dump.xml');

Затем на новой системе UMI импортирую данные из файла page_dump.xml:

header("Content-type: text/html; charset=utf-8");
include "./standalone.php";
$dir = CURRENT_WORKING_DIR."/sys-temp/import";
$importer = new xmlImporter();
$importer -> loadXmlFile($dir . "/page_dump.xml");
$importer -> setUpdateIgnoreMode(); // режим НЕ обновления уже существующих записей
$importer -> setFilesSource($dir); // путь до файлов
$importer -> execute();

Так же можно почитать/посмотреть на эту тему: api.docs.umi-cms.ru, UMI WIKI, Форум, Обмен данными,

[ Saitadmin.ru || с 2006 по текущий год || Санкт-Петербург || Антон Панченко ]