Дано: Пара сайтов. Основной и для разработки и экспериментов.
Цель: На dev сайте ведем разработку. С основного сайта получаем данные, заталкиваем на dev для тестов. Если все нормально то dev сайт делаем как основной. Создаем новый dev сайт, продолжаем разработку.
Желательный вариант: Получить полностью все материалы(материалы нужно получить со всеми связями) с основного сайта в архив (вместе с файлами прикрепленными к материалам, файлы - картинки). Далее импортировать этот архив на dev сайт.
Начал разработку своего модуля под "желательный вариант"
С экспортом проблем нет ...
Получаем общий массив данных путем
для нод:
<?php
$arrTypeNode = node_type_get_types();
foreach ($arrTypeNode as $typeNode) {
$arrayNodes[$typeNode->type] = entity_load('node', null, array('type' => $typeNode->type));
}
?>
для таксономии:
<?php
$arrayVocab = taxonomy_get_vocabularies();
foreach ($arrayVocab as $vocab) {
$arrayVocab[$vocab->vid]->termTree = taxonomy_get_tree($vocab->vid);
foreach ($arrayVocab[$vocab->vid]->termTree as $key =>$term) {
$arrayVocab[$vocab->vid]->termTree[$key] = (object)array_merge((array)$term,(array)taxonomy_term_load($term->tid));
}
}
?>
для файлов:
<?php
$arrayFiles = entity_load('file');
foreach ($arrayFiles as $file) {
$useFile = file_usage_list($file);
if (count($useFile) > 0) {
$rezCopy1 = file_unmanaged_copy($file->uri, SP_JSON_DIR_OUT . $file->filename, FILE_EXISTS_REPLACE);
if (!$rezCopy1) {
file_unmanaged_copy('public://' . $file->filename, SP_JSON_DIR_OUT . $file->filename, FILE_EXISTS_REPLACE);
}
}
else {
file_delete($file);
dpm($file, 'not use');
}
}
?>
Далее drupal_json_encode и затем file_unmanaged_save_data
В итоге имеем node.json, taxonomy.json, file.json. Каждый файл содержит друпаловские объекты с полями и внутренними tid, nid, fid
Логично попробовать вставить эти данные под теми же _id для сохранения связей
И вот тут начинаются проблемы. Стандартные функции API drupal такие как node_save, file_save, taxonomy_term_save не желают вставлять данные под теми же _id (Ошибок нет, но и данных нет.)
Какие могут быть идеи? в какую сторону копать? может есть уже готовые решения(с подробным описание применения)?
Нужен ли вообще такой импорт экспорт для друпала сообществу?
UPDATE
Решил путем использования кусков кода из node_save, file_save, taxonomy_term_save.
Модуль как причешу так выложу... отдельной статьёй.
Комментарии
UPDATE
Решил путем использования кусков кода из node_save, file_save, taxonomy_term_save.
Модуль как причешу так выложу... отдельной статьёй.
А можешь выложить сырым непричесанным кодом?
Как успехи?