Drupal → Пример миграции контента из vBulletin 3 в Drupal 7: структура форума (разделы)
Пример класса для 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
.
Комментарии
Плюсую, ждем с нетерпением самое суперценное - миграцию веток воблы в ноды с комментариями :)
Оставить комментарий