Imágenes duplicadas Prestashop
- Publicado en Modificaciones Prestashop
La solución para no duplicar imágenes en lmportación de proudctos por csv en prestashop viene deteminada por darle valor "1" en la opcion "Elimine las imágenes existentes (0 = no, 1 = si)".
Con esto bastaría. Ahora bien, si querermos asegurarnos de que esto no ocurra, aún sin utiizar esta opción podemos hacer las siguientes modificaciones en el código.
Advertencia:
Hacer siempres copia de seguridad del archivo que vamos a modificar.
Modificamos el archivo AdminImport.php
Linea 589:
if (array_key_exists('id', $info) AND (int)($info['id']) AND Product::existsInDatabase((int)($info['id'])))
{
$product = new Product((int)($info['id']));
$categoryData = Product::getProductCategories((int)($product->id));
foreach ($categoryData as $tmp)
$product->category[] = $tmp['id_category'];
}
{
$product = new Product((int)($info['id']));
$categoryData = Product::getProductCategories((int)($product->id));
foreach ($categoryData as $tmp)
$product->category[] = $tmp['id_category'];
}
Por:
$producto_existe = "0";
if (array_key_exists('id', $info) AND (int)($info['id']) AND Product::existsInDatabase((int)($info['id']), 'product'))
{
$producto_existe = "1";
$product = new Product((int)($info['id']));
$categoryData = Product::getProductCategories((int)($product->id));
foreach ($categoryData as $tmp)
$product->category[] = $tmp;
}
Y linea 825:
if (isset($product->image) AND is_array($product->image) and sizeof($product->image))
{
$productHasImages = (bool)Image::getImages((int)($cookie->id_lang), (int)($product->id));
foreach ($product->image AS $key => $url)
if (!empty($url))
{
$image = new Image();
$image->id_product = (int)($product->id);
$image->position = Image::getHighestPosition($product->id) + 1;
$image->cover = (!$key AND !$productHasImages) ? true : false;
$image->legend = self::createMultiLangField($product->name[$defaultLanguageId]);
if (($fieldError = $image->validateFields(UNFRIENDLY_ERROR, true)) === true AND ($langFieldError = $image->validateFieldsLang(UNFRIENDLY_ERROR, true)) === true AND $image->add())
{
if (!self::copyImg($product->id, $image->id, $url))
$this->_warnings[] = Tools::displayError('Error copying image: ').$url;
}
else
{
$this->_warnings[] = $image->legend[$defaultLanguageId].(isset($image->id_product) ? ' ('.$image->id_product.')' : '').' '.Tools::displayError('Cannot be saved');
$this->_errors[] = ($fieldError !== true ? $fieldError : '').($langFieldError !== true ? $langFieldError : '').mysql_error();
}
}
}
{
$productHasImages = (bool)Image::getImages((int)($cookie->id_lang), (int)($product->id));
foreach ($product->image AS $key => $url)
if (!empty($url))
{
$image = new Image();
$image->id_product = (int)($product->id);
$image->position = Image::getHighestPosition($product->id) + 1;
$image->cover = (!$key AND !$productHasImages) ? true : false;
$image->legend = self::createMultiLangField($product->name[$defaultLanguageId]);
if (($fieldError = $image->validateFields(UNFRIENDLY_ERROR, true)) === true AND ($langFieldError = $image->validateFieldsLang(UNFRIENDLY_ERROR, true)) === true AND $image->add())
{
if (!self::copyImg($product->id, $image->id, $url))
$this->_warnings[] = Tools::displayError('Error copying image: ').$url;
}
else
{
$this->_warnings[] = $image->legend[$defaultLanguageId].(isset($image->id_product) ? ' ('.$image->id_product.')' : '').' '.Tools::displayError('Cannot be saved');
$this->_errors[] = ($fieldError !== true ? $fieldError : '').($langFieldError !== true ? $langFieldError : '').mysql_error();
}
}
}
Por:
if ($producto_existe != "1" )
{
if (isset($product->image) AND is_array($product->image) and sizeof($product->image))
{
$productHasImages = (bool)Image::getImages((int)($cookie->id_lang), (int)($product->id));
foreach ($product->image AS $key => $url)
if (!empty($url))
{
$image = new Image();
$image->id_product = (int)($product->id);
$image->position = Image::getHighestPosition($product->id) + 1;
$image->cover = (!$key AND !$productHasImages) ? true : false;
$image->legend = self::createMultiLangField($product->name[$defaultLanguageId]);
if (($fieldError = $image->validateFields(UNFRIENDLY_ERROR, true)) === true AND ($langFieldError = $image->validateFieldsLang(UNFRIENDLY_ERROR, true)) === true AND $image->add())
{
if (!self::copyImg($product->id, $image->id, $url))
$this->_warnings[] = Tools::displayError('Error copying image: ').$url;
}
else
{
$this->_warnings[] = $image->legend[$defaultLanguageId].(isset($image->id_product) ? ' ('.$image->id_product.')' : '').' '.Tools::displayError('Cannot be saved');
$this->_errors[] = ($fieldError !== true ? $fieldError : '').($langFieldError !== true ? $langFieldError : '').mysql_error();
}
}
}
}