Несколько товаров с одинаковым названием

При импорте товаров, minishop не хочет создавать несколько товаров с одинаковым названием, но с разными остальными параметрами. Допустим, в прайсе несколько разновидностей автомобильного диска LZ013 с разными параметрами, но minishop импортирует только один из них. И вместо 700 наименований, получается 151. Подскажите, правильно ли я понял проблему, и как мне от нее избавиться?
Гаврилов Александр
21 февраля 2013, 17:02
modx.pro
1 136
0

Комментарии: 13

Василий Наумкин
21 февраля 2013, 21:08
0
Правильно, товар в категории должен быть с уникальным именем.

Как избавиться? Убрать проверку в скрипте импорта или переназвать товары, добавив в них изменяющийся параметр.
    Гаврилов Александр
    21 февраля 2013, 21:10
    0
    Подскажите, а что конкретно нужно изменить в коде, который вы показали, чтобы убрать эту проверку?
      Василий Наумкин
      21 февраля 2013, 21:13
      0
      Вместо

      if ($res = $modx->getObject('modResource', array('parent' => $category, 'pagetitle' => $product['pagetitle']))) {
      	if ($mode == 'update') {
      		$id = $res->get('id');
      		$newproduct = array_merge($res->toArray(), $product, $ms);
      		$newproduct['tags'] = $tags;
      		$response = $modx->runProcessor(
      			'mgr/goods/update'
      			,$newproduct
      			,array('processors_path' => MODX_CORE_PATH.'components/minishop/processors/')
      		);
      		if ($response->isError()) {
      			return $modx->error->failure('Error on row '.$i.': '.$response->getMessage());
      		}
      		$modx->removeCollection('ModGallery', array('gid' => $id));
      	}
      	else {
      		$i++;
      		continue;
      	}
      }
      else {
      	$res = $modx->newObject('modResource');
      	$res->fromArray($product);
      	$newproduct = array_merge($res->toArray(), $product, $ms);
      	$newproduct['tags'] = $tags;
      	$response = $modx->runProcessor(
      		'mgr/goods/create'
      		,$newproduct
      		,array('processors_path' => MODX_CORE_PATH.'components/minishop/processors/')
      	);
      
      	if ($response->isError()) {
      		return $modx->error->failure('Error on row '.$i.': '.$response->getMessage());
      	}
      	else {
      		$id = $response->response['object']['gid'];
      		if (!$res = $modx->getObject('modResource', $id)) {
      			return $modx->error->failure('Error on row '.$i.': '.print_r($response->response['object'],1));
      		}
      	}
      }

      Сделать вот так:

      $res = $modx->newObject('modResource');
      $res->fromArray($product);
      $newproduct = array_merge($res->toArray(), $product, $ms);
      $newproduct['tags'] = $tags;
      $response = $modx->runProcessor(
      	'mgr/goods/create'
      	,$newproduct
      	,array('processors_path' => MODX_CORE_PATH.'components/minishop/processors/')
      );
      
      if ($response->isError()) {
      	return $modx->error->failure('Error on row '.$i.': '.$response->getMessage());
      }
      else {
      	$id = $response->response['object']['gid'];
      	if (!$res = $modx->getObject('modResource', $id)) {
      		return $modx->error->failure('Error on row '.$i.': '.print_r($response->response['object'],1));
      	}
      }
    Гаврилов Александр
    21 февраля 2013, 21:30
    0
    Спасибо большое.
    Все работает
      Василий Наумкин
      21 февраля 2013, 21:31
      0
      На здоровье!
        Гаврилов Александр
        21 февраля 2013, 21:33
        0
        Еще маленькая деталь, Василий, подскажите, как сделать так, чтобы при импорте все товары были опубликованы? А то галочка не стоит нигде.

        Заранее благодарен!
          Василий Наумкин
          21 февраля 2013, 21:55
          0
          В системных настройках включить публикацию по умолчанию.

          Или добавить всем товарам поле published = 1, и указать соответствие при импорте.
            Гаврилов Александр
            21 февраля 2013, 23:59
            0
            В системных настройках Публиковать по умолчанию (publish_default) поставил Да, не помогло. В прайсе добавил столбец со значением 1, в Поле для импорта добавил published. Это тоже не помогло. Я что-то не так делаю, или в чем причина?
              Богдан
              22 февраля 2013, 02:27
              0
              Вы не забыли случайно добавить поле published в настройках minishop в поле minishop.import_fields? Вообще добавление всем товарам published = 1 должно решить проблему, просто проверьте поле minishop.import_fields.
                Гаврилов Александр
                22 февраля 2013, 15:37
                0
                Не забыл, добавил, не помогло.
                А в прайсе, я должен добавить столбец со значением 1, или published = 1?
                  Богдан
                  22 февраля 2013, 16:44
                  0
                  Значение — 1.
              Богдан
              22 февраля 2013, 02:44
              0
              Василий, импорт работает только для основного контекста? Пробую импортировать товары для категории в другом контексте — получаю пустую категорию, при перетаскивании этой категории в основной контекст — товары появляются.
          Гаврилов Александр
          22 февраля 2013, 16:54
          0
          Не понимаю, что не так. В поле minishop.import_fields добавил в конце значение published. В прайсе который импортирую, добавил столбец со значением 1. Все товары импортируются не опубликованными.
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            13