class Category in Commerce Migrate 3.1.x
Same name and namespace in other branches
- 8.2 modules/magento/src/Plugin/migrate/source/magento2/Category.php \Drupal\commerce_migrate_magento\Plugin\migrate\source\magento2\Category
- 3.0.x modules/magento/src/Plugin/migrate/source/magento2/Category.php \Drupal\commerce_migrate_magento\Plugin\migrate\source\magento2\Category
Yields each taxonomy vocabulary.
The cell containing the Magento categories is a comma separated list of the categories assigned to the product variation in this row. Each category is a string of categories with a forward slash delimiter. The first one is the top level category and it is used as the taxonomy vocabulary. The following categories are terms in that vocabulary listed in hierarchical order.
Consider this example.
Default Category/Gear/Bags,Special Category/Collections/New Yoga Collection
In this case, 'Default Category' and 'Special Category' are the top level and will be migrated to vocabularies, with machine name 'default_category' and 'special_category' respectively.
Plugin annotation
@MigrateSource(
id = "magento2_category_csv"
)
Hierarchy
- class \Drupal\commerce_migrate_magento\Plugin\migrate\source\magento2\Category extends \Drupal\migrate_source_csv\Plugin\migrate\source\CSV
Expanded class hierarchy of Category
3 string references to 'Category'
- FieldInstanceTest::testFieldInstances in modules/
commerce/ tests/ src/ Kernel/ Migrate/ commerce1/ FieldInstanceTest.php - Tests migrating D7 field instances to field_config entities.
- ProductTest::setUp in modules/
csv_example/ tests/ src/ Kernel/ Migrate/ ProductTest.php - TaxonomyTermTest::setUp in modules/
csv_example/ tests/ src/ Kernel/ Migrate/ TaxonomyTermTest.php
File
- modules/
magento/ src/ Plugin/ migrate/ source/ magento2/ Category.php, line 28
Namespace
Drupal\commerce_migrate_magento\Plugin\migrate\source\magento2View source
class Category extends CSV {
/**
* {@inheritdoc}
*/
public function initializeIterator() {
$file = parent::initializeIterator();
return $this
->getYield($file);
}
/**
* Prepare one row per taxonomy vocabulary in the source data.
*
* @param \Generator $file
* The source CSV file object.
*
* @codingStandardsIgnoreStart
*
* @return \Generator
* A new row, one for each unique vocabulary.
*
* @codingStandardsIgnoreEnd
*/
public function getYield(\Generator $file) {
foreach ($file as $row) {
$new_row = [];
$categoryGroup = explode(',', $row['categories']);
foreach ($categoryGroup as $category) {
$new_row['vocabulary'] = strstr($category, '/', TRUE);
if ($this
->rowUnique($new_row)) {
(yield $new_row);
}
}
}
}
/**
* Tests if the row is unique.
*
* @param array $row
* An array of attribute_name and attribute_value for the current row.
*
* @return bool
* Return TRUE if the row is unique, FALSE if it is not unique.
*/
protected function rowUnique(array $row) {
static $unique_rows = [];
if (in_array($row['vocabulary'], $unique_rows)) {
return FALSE;
}
array_push($unique_rows, $row['vocabulary']);
return TRUE;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
Category:: |
public | function | Prepare one row per taxonomy vocabulary in the source data. | |
Category:: |
public | function | ||
Category:: |
protected | function | Tests if the row is unique. |