Пример кода импорта товара minishop2 со свойствами и опциям
// Путь к CSV файлу
$csvFile = $_SERVER["DOCUMENT_ROOT"] . "/csvimport.csv";
// Id шаблона товара
$productTemplateId = 6;
// Чтение CSV файла
if (($handle = fopen($csvFile, "r")) !== FALSE) {
// Пропускаем заголовок
$header = fgetcsv($handle, 1000, ";");
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
$categoryId = $data[0];
$name = $data[1];
$price = $data[2];
$vendorName = $data[3];
// Опция товара, созданная пользователем.
$diametr = $data[4];
if ($category = $modx->getObject('modResource', $categoryId)) {
$newProduct = $modx->newObject('msProduct');
$newProduct->set('template', $productTemplateId);
$newProduct->set('parent', $categoryId);
$newProduct->set('pagetitle', $name);
$newProduct->set('price', $price);
if (!$vendor = $modx->getObject('msVendor', array('name' => $vendorName))) {
$vendor = $modx->newObject('msVendor', array('name' => $vendorName));
$vendor->save();
}
$newProduct->set('vendor', $vendor->get('id'));
$newProduct->set('published', 1);
// Задаем alias товару
$alias = $newProduct->cleanAlias($name);
$newProduct->set('alias', $alias);
// Сохраняем товар
$newProduct->save();
// Устанавливаем опции
$options = [];
if ($diametr) {
$diametr_arr = explode(' ', $diametr);
foreach ($diametr_arr as $di) {
if (!empty($di)) {
$options['diametr'][] = $di;
}
}
if (!empty($options)) {
foreach ($options as $k => $v) {
if (is_array($v)) {
$options[$k] = array_map('trim', $options[$k]);
$options[$k] = array_keys(array_flip($options[$k]));
$options[$k] = array_filter($options[$k]);
} else {
$options[$k] = trim($options[$k]);
}
$newProduct->set($k, $options[$k]);
}
$newProduct->set('options', $options);
$newProduct->save();
}
}
}
}
}