Несколько товаров с одинаковым названием
Комментарии: 13
Правильно, товар в категории должен быть с уникальным именем.
Как избавиться? Убрать проверку в скрипте импорта или переназвать товары, добавив в них изменяющийся параметр.
Как избавиться? Убрать проверку в скрипте импорта или переназвать товары, добавив в них изменяющийся параметр.
Подскажите, а что конкретно нужно изменить в коде, который вы показали, чтобы убрать эту проверку?
Вместо
Сделать вот так:
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));
}
}
Спасибо большое.
Все работает
Все работает
На здоровье!
Еще маленькая деталь, Василий, подскажите, как сделать так, чтобы при импорте все товары были опубликованы? А то галочка не стоит нигде.
Заранее благодарен!
Заранее благодарен!
В системных настройках включить публикацию по умолчанию.
Или добавить всем товарам поле published = 1, и указать соответствие при импорте.
Или добавить всем товарам поле published = 1, и указать соответствие при импорте.
В системных настройках Публиковать по умолчанию (publish_default) поставил Да, не помогло. В прайсе добавил столбец со значением 1, в Поле для импорта добавил published. Это тоже не помогло. Я что-то не так делаю, или в чем причина?
Вы не забыли случайно добавить поле published в настройках minishop в поле minishop.import_fields? Вообще добавление всем товарам published = 1 должно решить проблему, просто проверьте поле minishop.import_fields.
Не забыл, добавил, не помогло.
А в прайсе, я должен добавить столбец со значением 1, или published = 1?
А в прайсе, я должен добавить столбец со значением 1, или published = 1?
Значение — 1.
Василий, импорт работает только для основного контекста? Пробую импортировать товары для категории в другом контексте — получаю пустую категорию, при перетаскивании этой категории в основной контекст — товары появляются.
Не понимаю, что не так. В поле minishop.import_fields добавил в конце значение published. В прайсе который импортирую, добавил столбец со значением 1. Все товары импортируются не опубликованными.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.