Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal 使用单个SKU导入多尺寸产品_Drupal_Drupal Commerce_Csv Import_Drupal Feeds - Fatal编程技术网

Drupal 使用单个SKU导入多尺寸产品

Drupal 使用单个SKU导入多尺寸产品,drupal,drupal-commerce,csv-import,drupal-feeds,Drupal,Drupal Commerce,Csv Import,Drupal Feeds,我有常规的Drupal商业设置,安装了feed、feed篡改和商业feed模块。 下面是我试图导入的CSV文件的一小部分: SKU,Title,Price,Sizes,Model JKR122/1,Red T-Shirt,44,"42,44,46",JKR122 JKR122/2,Blue T-Shirt,44,"42,44,46",JKR122 是否可以使用Feeds Tamper,分解“大小”列并将每个列作为单独的产品导入。可能需要在SKU中添加分解大小 我不擅长Excel,所以如果可以轻

我有常规的Drupal商业设置,安装了feed、feed篡改和商业feed模块。 下面是我试图导入的CSV文件的一小部分:

SKU,Title,Price,Sizes,Model
JKR122/1,Red T-Shirt,44,"42,44,46",JKR122
JKR122/2,Blue T-Shirt,44,"42,44,46",JKR122
是否可以使用Feeds Tamper,分解“大小”列并将每个列作为单独的产品导入。可能需要在SKU中添加分解大小


我不擅长Excel,所以如果可以轻松地重新格式化这个巨大的CSV文件,请告诉我如何重新格式化。

由于问题今天必须解决,我编写了PHP脚本,重新格式化我的CSV:

我会留下问题,以防没人知道这是否可以通过“Drupal方式”实现


<?php

define('ATTR_SIZE', 'Sizes');
define('ATTR_SKU', 'SKU');
define('IMPORT_FILE', 'import_file.csv');
define('EXPORT_FILE', 'export_file.csv');
define('CSV_DELIMITER', ',');

// Open csv
if(!file_exists(IMPORT_FILE) || !is_readable(IMPORT_FILE))
  die('Check file');

$header = NULL;
$all_rows = array();

if (($handle = fopen(IMPORT_FILE, 'r')) !== FALSE) {
  while (($row = fgetcsv($handle, 1000, CSV_DELIMITER)) !== FALSE) {
    if (!$header)
      $header = $row;
    else
      $all_rows[] = array_combine($header, $row);
  }
  fclose($handle);
}

// Process csv
$new_rows = array();

foreach ($all_rows as $key => $row) {
  if (!empty($row[ATTR_SIZE])) {
    $original_row = $row;
    $sizes = explode(',', $row[ATTR_SIZE]);

    foreach ($sizes as $size) {
      $trimmed_size = trim($size);

      if (!empty($trimmed_size)) {
        $row = $original_row;
        $row[ATTR_SIZE] = $trimmed_size; // Save size
        $row[ATTR_SKU] = $row[ATTR_SKU] . '/' . $trimmed_size; // Modify SKU
        $new_rows[] = $row; // Add new row
      }
    }
  }
  else {
    $new_rows[] = $row;
  }
}

// Save csv
$header = NULL;
$handle = fopen(EXPORT_FILE, 'w');

foreach ($new_rows as $fields) {
  if (!$header) {
    fputcsv($handle, array_keys($fields));
    $header = TRUE;
  }
  fputcsv($handle, $fields);
}
fclose($handle);