Prestashop - Problema con las hojas de proveedores  

 
Sergio
 Sergio
Usuario activo

Hola, buenos días.

He recibido un email de Google webmastertools diciendo que se había producido un incremento de errores en mi servidor web. Siguiendo los enlaces he visto que todos eran problemas de las fichas de los proveedores (ejemplo de uno):

http://www.djstore.es/80_allen-heath

Resulta que tenía activado define('_PS_MODE_DEV_', true); en config/defines.inc.php y cuando cargaba una página de proveedor salía esto:

Unknown column 'product_attribute_shop.id_product_attribute' in 'field list'

SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, MAX(product_attribute_shop.`id_product_attribute`) id_product_attribute
			, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`,
			pl.`meta_title`, pl.`name`, pl.`available_now`, pl.`available_later`, MAX(image_shop.`id_image`) id_image, il.`legend`, m.`name` AS manufacturer_name,
				DATEDIFF(
					product_shop.`date_add`,
					DATE_SUB(
						NOW(),
						INTERVAL 20 DAY
					)
				) > 0 AS new FROM `ps_product` p
			 INNER JOIN ps_product_shop product_shop
		ON (product_shop.id_product = p.id_product AND product_shop.id_shop = 1)
			LEFT JOIN `ps_product_lang` pl
				ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = 1 AND pl.id_shop = 1 )
			LEFT JOIN `ps_image` i
				ON (i.`id_product` = p.`id_product`) LEFT JOIN ps_image_shop image_shop
		ON (image_shop.id_image = i.id_image AND image_shop.id_shop = 1 AND image_shop.cover=1)
			LEFT JOIN `ps_image_lang` il
				ON (i.`id_image` = il.`id_image` AND il.`id_lang` = 1)
			LEFT JOIN `ps_manufacturer` m
				ON (m.`id_manufacturer` = p.`id_manufacturer`)
			 LEFT 
			JOIN ps_stock_available stock
			ON (stock.id_product = p.id_product AND stock.id_product_attribute = 0 AND stock.id_shop = 1  AND stock.id_shop_group = 0  )JOIN `ps_category_product` cp ON (p.id_product = cp.id_product)JOIN `ps_category` ca ON cp.`id_category` = ca.`id_category` AND ca.`active` = 1
				WHERE p.`id_manufacturer` = 80
				 AND product_shop.`active` = 1
				 AND product_shop.`visibility` IN ("both", "catalog")
				GROUP BY product_shop.id_product
				ORDER BY product_shop.`price` asc
				LIMIT 0,12


at line 646 in file classes/db/Db.php

641. 			WebserviceRequest::getInstance()->setError(500, '[SQL Error] '.$this->getMsgError().'. From '.(isset($dbg[3]['class']) ? $dbg[3]['class'] : '').'->'.$dbg[3]['function'].'() Query was : '.$sql, 97);
642. 		}
643. 		elseif (_PS_DEBUG_SQL_ && $errno && !defined('PS_INSTALLATION_IN_PROGRESS'))
644. 		{
645. 			if ($sql)
646. 				throw new PrestaShopDatabaseException($this->getMsgError().'

'.$sql.'

');
647. throw new PrestaShopDatabaseException($this->getMsgError());
648. }
649. }
650.
651. /**

DbCore->displayError - [line 340 - classes/db/Db.php] - [1 Arguments]
DbCore->query - [line 516 - classes/db/Db.php] - [1 Arguments]
DbCore->executeS - [line 373 - classes/Manufacturer.php] - [1 Arguments]
ManufacturerCore::getProducts - [line 98 - controllers/front/ManufacturerController.php] - [6 Arguments]
ManufacturerControllerCore->assignOne - [line 79 - controllers/front/ManufacturerController.php]
ManufacturerControllerCore->initContent - [line 180 - classes/controller/Controller.php]
ControllerCore->run - [line 373 - classes/Dispatcher.php]
DispatcherCore->dispatch - [line 28 - index.php]

He cambiado PS_MODE_DEV por false y ahora carga la página de proveedor pero indica que no hay artículos de ese proveedor, lo cual no es cierto.

Tengo una copia en local de mi web y en local no tengo este problema. He consultado las tablas ps_product_attribute_shop en local y en el servidor y ambas están vacías. En el código que he puesto antes parece como que no encuentra el prefijo "ps" para añadir a las tablas: ps_product_attribute_shop frente a product_attribute_shop.

¿Me podéis echar una mano a solucionar esto, please?

Gracias por adelantado

URL del sitio: Contenido solo visible a usuarios registrados

Citar
Respondido : 21/06/2015 2:15 pm
Pablo Velasco
 Pablo Velasco
Illustrious Member

Hola,

Da la sensación de que PrestaShop tiene un bug en esta consulta contra la base de datos.

Prueba a editar el archivo classes/Manufacturer.php. Previa copia de seguridad del mismo cambio en él la cadena product_attribute_shop (sale en 4 sitios) por la cadena pa y comprueba si así se soluciona el problema.

Si nuestra ayuda te sirve déjanos tu testimonio y mejora así el posicionamiento de tu web:
Enviar Testimonio
¡Gracias!.

ResponderCitar
Respondido : 22/06/2015 12:28 pm

optimiza-automaticamente-todas-las-imagenes-de-tu-wordpress

Por favor Iniciar Sesión o Registro