Jump to content

Se duplican las caracteristicas en la ficha de los productos


pepocero

Recommended Posts

Bueno, basicamente es eso. Cuando en el BO, al editar un producto, voy a la pestaña caracteristicas y modifico alguna de dichas caracteristicas (como el alto o el ancho -una medida en centimetros por ejemplo -) cuando voy al producto en el front, en la pestaña ficha tecnica aparecen asi:

  • Alto 12
  • Ancho 12
  • Peto 12
  • Profundo 12
  • Alto 12
  • Ancho 12
  • Peto 12
  • Profundo 12
  • Alto 12
  • Ancho 12
  • Peto 12
  • Profundo 12

 

 

Pareciera que en vez de borrar el valor anterior, lo agregara al que ya tiene, y lo duplica... si lo vuelvo a hacer, borrando lo que ya tenia y modificandolo por otros valores, me apareceria otras filas mas duplicadas....

 

Si alguien sabe como solucionarlo se lo agradeceria...

 

Mi version de prestashop es 1.4.7.0

post-296287-0-42971200-1334842113_thumb.jpg

post-296287-0-28536800-1334842125_thumb.jpg

Link to comment
Share on other sites

  • 7 months later...
  • 2 months later...

Hola .

 

Encontre que el error me los esta produciendo el modulo de productos nuevos (blocknewproducts). Por lo menos en mi caso. Cuando el producto esta nuevo repite la informacion de la ficha tecnica, una vez que el producto deja de ser nuevo, se desaparece el duplicado.

 

Puedes intentar desactivar el modulo de productos nuevos a ver si se soluciona el problema.

Link to comment
Share on other sites

Logre solucionar el problema.

 

Hay que cambiar el codigo de la funcion (cacheFrontFeatures) en el archivo /classes/Product.php linea 3162 o 3169.

 

Y sustituirla por este cogido:

public static function cacheFrontFeatures($product_ids, $id_lang)
{
 if (!Feature::isFeatureActive())
  return;
 $product_implode = array();
 foreach ($product_ids as $id_product)
  if ((int)$id_product && !array_key_exists($id_product.'-'.$id_lang, self::$_cacheFeatures))
   $product_implode[] = (int)$id_product;
 if (!count($product_implode))
  return;
 $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
 SELECT id_product, name, value, pf.id_feature
 FROM '._DB_PREFIX_.'feature_product pf
 LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.(int)$id_lang.')
 LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.(int)$id_lang.')
 LEFT JOIN '._DB_PREFIX_.'feature f ON (f.id_feature = pf.id_feature)
 WHERE `id_product` IN ('.implode($product_implode, ',').')
 ORDER BY f.position ASC');
 foreach ($result as $row)
 {
  if (!array_key_exists($row['id_product'].'-'.$id_lang, self::$_frontFeaturesCache))
   self::$_frontFeaturesCache[$row['id_product'].'-'.$id_lang] = array();
  if (!isset(self::$_frontFeaturesCache[$row['id_product'].'-'.$id_lang][$row['id_feature']]))
   self::$_frontFeaturesCache[$row['id_product'].'-'.$id_lang][$row['id_feature']] = $row;
 }
}

 

Este codigo es la misma funcion pero tomada de la version 1.5.3 del prestashop

 

cualquier duda estamos a la orden. ;)

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...