Joel Vazquez Escrivá Posted April 15, 2020 Share Posted April 15, 2020 Buenas noches a todos. Resulta que instalé un nuevo theme en mi tienda, y ahora me encuentro con un problema que no consigo solucionar. La pagina index se muestra en blanco, arrojandome el siguiente error el servidor: [Wed Apr 15 11:44:20.096873 2020] [proxy_fcgi:error] [pid 18924] [client 178.237.230.76:36366] AH01071: Got error 'PHP message: PHP Fatal error: Call to undefined method Product::getImagesByID() in /var/www/vhosts/coping.es/httpdocs/cache/smarty/compile/44/50/93/44509372a82cf4b8c15e1e7d2ef5c6cfdf136bf0.file.product-list.tpl.php on line 151n' He estado haciendo varias pruebas y he conseguido hallar el problema, y parece ser un conflicto en los overrides, exactamente en el archivo override/classes/product.php Hay un modulo llamado megaproduct que cuando lo reinicializo para que funcione, copia su propio archivo override para funcionar en override/classes/product.php, causandome el problema mencionado anteriormente. Supongo que combinando las funciones necesarias o modificando alguna se podrá solucionar, pero no tengo apenas conocimiento de código php. Si alguien me pudiera ayudar a resolver el problema, estos son los 2 archivos product.php El archivo product.php original que entrega el theme para copiar en la carpeta override/classes/ : <?php class Product extends ProductCore { public static function getProductsImgs($product_id) { $sql = ' (SELECT * from `'._DB_PREFIX_.'image` WHERE id_product="'.$product_id.'" and cover=1) union (SELECT * from `'._DB_PREFIX_.'image` WHERE id_product="'.$product_id.'" and cover=0 ORDER BY `position` LIMIT 0,1 ) LIMIT 0,2 '; $result = Db::getInstance()->ExecuteS($sql); return $result; } public static function getImagesByID($id_product, $limit = 2){ $id_image = Db::getInstance()->ExecuteS('SELECT `id_image` FROM `'._DB_PREFIX_.'image` WHERE `id_product` = '.(int)($id_product) . ' ORDER BY position ASC LIMIT 1, ' . $limit); $toReturn = array(); if(!$id_image) return; else foreach($id_image as $image) $toReturn[] = $id_product . '-' . $image['id_image']; return $toReturn; } } y este es el archivo product.php que me copia el modulo megaproduct: <?php require_once(_PS_MODULE_DIR_ . "megaproduct/megaproduct.php"); class Product extends ProductCore { public static function isMegaProduct($id_product) { $cache_key = $id_product.'_isProductMegaproduct'; if (!Cache::isStored($cache_key)) { //mpinstall $result = Db::getInstance()->ExecuteS(' SELECT cp.`id_product` FROM `'._DB_PREFIX_.'megaproduct` cp WHERE cp.`id_product` = '.(int)($id_product)); Cache::store($cache_key, sizeof($result) > 0); } return Cache::retrieve($cache_key); } public static function getMegaProduct($id_product) { return new MPClass($id_product); } public static function getCombinationAttributes($id_product_attribute) { $attributes = Db::getInstance()->ExecuteS(' SELECT pa.`id_attribute` FROM `'._DB_PREFIX_.'product_attribute_combination` pa WHERE pa.`id_product_attribute` = '.(int)($id_product_attribute)); $arrayAttr = array(); if(sizeof($attributes)) { foreach($attributes as $attr) { array_push($arrayAttr, $attr['id_attribute']); } } return $arrayAttr; } /** * Display price with right format and currency * * @param array $params Params * @object $smarty Smarty object * @return string Price with right format and currency */ static function convertPrice($params, &$smarty) { if(isset($params['megaproduct'])) { $id_product = intval($params['megaproduct']); $design = new megaproductdesign($id_product,Context::getContext()->cookie->id_lang); if(isset($design->id_product)) { if($params['price']==0) return ''; $return = Tools::displayPrice($params['price'], Context::getContext()->currency); if(isset($design->labelbeforeprice) && $design->labelbeforeprice!='') $return = $design->labelbeforeprice.' '.$return; if(isset($design->labelafterprice) && $design->labelafterprice!='') $return = $return. ' '.$design->labelafterprice.' '; return $return; } } return Tools::displayPrice($params['price'], Context::getContext()->currency); } } ?> Si alguien me pudiera ayudar con esto le estaria eternamente agradecido, llevo varios dias dandole vueltas y no consigo hallar la solución. Un saludo. Link to comment Share on other sites More sharing options...
joseantgv Posted April 16, 2020 Share Posted April 16, 2020 Tu tienes un fichero /override/classes/Product.php y al instalar el módulo megaproduct copia su override y elimina el que tú tenías? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now