Migrate taxonomy images from Drupal 5
Last updated on
30 April 2025
The following class was used to migrate taxonomy term images from Drupal 5's Taxonomy Image module into a proper Drupal 7 entity field. You'll want to adjust class and field names appropriately for your use case.
Note: Taxonomy Image in Drupal 5 did not make use of the files table, so you need to specify a path to your taxonomy images in the prepareRow() method.
class GWJTermImageMigration extends DrupalTerm5Migration {
public function __construct(array $arguments) {
$this->sourceFields['field_image'] = t('Constructed source image field');
$this->sourceFields['field_image:title'] = t('Constructed source image title field');
$this->sourceFields['field_image:alt'] = t('Constructed source image alt field');
$this->sourceFields['field_image:source_dir'] = t('Constructed source image source directory field');
$this->sourceFields['field_image:destination_dir'] = t('Constructed source image destination directory field');
$this->sourceFields['field_image:destination_file'] = t('Constructed source image destination file field');
parent::__construct($arguments);
$this->addFieldMapping('field_image', 'field_image');
$this->addFieldMapping('field_image:file_class')->defaultValue('MigrateFileUri');
$this->addFieldMapping('field_image:title', 'field_image:title')->defaultValue('');
$this->addFieldMapping('field_image:alt', 'field_image:alt')->defaultValue('');
$this->addFieldMapping('field_image:language')->defaultValue(LANGUAGE_NONE);
$this->addFieldMapping('field_image:source_dir', 'field_image:source_dir')->defaultValue('');
$this->addFieldMapping('field_image:destination_dir', 'field_image:destination_dir')->defaultValue('');
$this->addFieldMapping('field_image:destination_file', 'field_image:destination_file')->defaultValue('');
$this->addFieldMapping('field_image:file_replace')->defaultValue(FILE_EXISTS_REPLACE);
$this->addFieldMapping('field_image:preserve_files')->defaultValue(FALSE);
}
protected function query() {
$query = parent::query();
$query->leftJoin('term_image', 'ti', 'td.tid = ti.tid');
$query->addField('ti', 'path', 'term_image_path');
return $query;
}
public function prepareRow($row) {
if (parent::prepareRow($row) === FALSE) {
return FALSE;
}
$file_base_path = variable_get('gwj_migrate_file_path');
if (!empty($row->term_image_path)) {
$path = $file_base_path .'/'. preg_replace('/^files\//', '', $row->term_image_path);
$pathinfo = pathinfo($path);
$row->{'field_image'} = $pathinfo['basename'];
$row->{'field_image:source_dir'} = $pathinfo['dirname'];
$row->{'field_image:destination_dir'} = 'public://term_images';
$row->{'field_image:destination_file'} = $pathinfo['basename'];
$row->{'field_image:title'} = $row->name;
$row->{'field_image:alt'} = $row->name;
}
}
}
Help improve this page
Page status: Not set
You can:
You can:
- Log in, click Edit, and edit this page
- Log in, click Discuss, update the Page status value, and suggest an improvement
- Log in and create a Documentation issue with your suggestion