Пример класса для Migrate, для переноса разделов из vBulletin 3.8.x в Drupal 7.x с сохранением иерархии:
class StructureMigration extends Migration {
public function __construct($arguments) {
parent::__construct($arguments);
// Source
$query = Database::getConnection('default', 'vbulletin')->select('forum', 'f');
$query->fields('f', array('forumid', 'parentid', 'title', 'description', 'displayorder'));
$query->orderBy('f.forumid');
$this->source = new MigrateSourceSQL($query, array(), NULL, array('map_joinable' => FALSE));
// Destination
$this->destination = new MigrateDestinationTerm('sections');
// Key schema
$source_key_schema = array('threadid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE));
$this->map = new MigrateSQLMap($this->machineName, $source_key_schema, MigrateDestinationTerm::getKeySchema());
// Mapping
$this->addFieldMapping('tid', 'forumid');
$this->addFieldMapping('name', 'title');
$this->addFieldMapping('description', 'description');
$this->addFieldMapping('format')->defaultValue('filtered_html');
$this->addFieldMapping('weight', 'displayorder');
$this->addFieldMapping('parent', 'parentid');
}
public function prepareRow($row) {
if (parent::prepareRow($row) === FALSE) {
return FALSE;
}
if ($row->parentid <= 0) {
$row->parentid = NULL;
}
}
public function prepare($term, $row) {
// http://xandeadx.ru/blog/drupal/511
db_query("INSERT IGNORE INTO {taxonomy_term_data} (tid) VALUES (?)", array($term->tid));
}
}
Перед импортом нужно создать словарь с именем sections
.
Написанное актуально для
Drupal 7, Migrate 2.4
Похожие записи
- Пример миграции контента из vBulletin 3 в Drupal 7: ответы в темах (комментарии)
- Пример миграции контента из vBulletin 3 в Drupal 7: темы (топики)
- Пример миграции контента из vBulletin 3 в Drupal 7: пользователи
- Миграция терминов и комментариев с сохранением идентификаторов
- Пример миграции материалов из Drupal 5 в Drupal 7 с помощью модуля Migrate
Комментарии
Плюсую, ждем с нетерпением самое суперценное - миграцию веток воблы в ноды с комментариями :)
Добавить комментарий