У меня есть скрипт, который извлекает данные из стороннего файла. Мой импорт просто анализирует и вставляет строки, что работает нормально.
Проблема возникает с изображениями.
Когда запускается скрипт импорта, он сначала удаляет все текущие элементы, а затем начинается импорт, вставляя все продукты и изображения в галерею.
При первом импорте все в порядке, изображения загружаются, и я вижу их на веб-интерфейсе без проблем. Проблема возникает каждый раз, когда я затем повторно импортирую эти продукты, кажется, что они не удаляют все изображения, так как при повторном импорте продуктов я вижу, например, 4 правильных изображения, а затем множество пустых строк, таких как изображения должен быть там, но не может быть найден.
Я не хочу видеть эти пустые строки, но я не уверен, почему они там.
Может ли это быть связано с тем, что изображения товара уже есть в каталоге?
Я действительно не уверен, что и почему это делает то, что есть.
Спасибо
РЕДАКТИРОВАТЬ:
Мой код:
require_once('app/Mage.php');
$app = Mage::app('default');
$product = Mage::getSingleton('catalog/product');
$txt_file = file_get_contents('test.txt');
$rows = explode("\n", $txt_file);
array_shift($rows);
foreach($rows as $row => $data)
{
//get row data
$row_data = explode('^', $data);
$info[$row]['uniqueid'] = $row_data[0];
$info[$row]['client'] = $row_data[1];
$info[$row]['make'] = $row_data[2];
$info[$row]['model'] = $row_data[3];
$info[$row]['adtext'] = $row_data[4];
//display images
$row_images = explode(',', $info[$row]['picturereference']);
foreach($row_images as $row_image)
{
$product->addImageToMediaGallery(Mage::getBaseDir('media') . DS . 'import/' . $row_image, array('image', 'small_image','thumbnail'), false, false);
}
$product->setStoreId(Mage::app()->getStore(true)->getWebsite()->getId());
$product->setWebsiteIds(array(Mage::app()->getStore(true)->getWebsite()->getId()));
$product->setId($info[$row]['id']);
$product->setSku(strtolower($info[$row]['make']).'-'.strtolower($info[$row]['model']));
$product->setName($info[$row]['make']);
$product->setDescription($info[$row]['adtext']);
try {
$product->save();
echo "Saved";
}
catch (Exception $ex) {
echo "<pre>".$ex."</pre>";
}
}
Это потому, что addImageToMediaGallery
вызывается на каждой итерации и добавляет все изображения к каждому продукту?
Спасибо