Jump to content

Combinar dos Override


Recommended Posts

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...