antofer Posted May 14, 2017 Share Posted May 14, 2017 Hola Antes de nada decir que soy totalmente nuevo en esto y hasta ahora este foro me ha sido de gran ayuda para lo poquito que he conseguido. De momento he creado mi propio modulo que aparece en la pagina de producto y todo funcionando, pero es hora de dar un pasito mas, necesito que el texto que tenga mi modulo en su interior sea por ejemplo: el precio del producto activo consigo crear mi variables y pasarlas al archivo .tpl pero estoy atascadísimo porque no sé como acceder a los datos del producto activo y asi pasarlos al archivo .tpl y que los muestre Muchas gracias de antemano y un saludo Link to comment Share on other sites More sharing options...
nadie Posted May 14, 2017 Share Posted May 14, 2017 Hola, Te hablo de la 1.6 Fíjate que en el /themes/plantilla/product.tpl tienes esto: {if !$priceDisplay || $priceDisplay == 2} {assign var='productPrice' value=$product->getPrice(true, $smarty.const.NULL, 6)} {assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(false, $smarty.const.NULL)} {elseif $priceDisplay == 1} {assign var='productPrice' value=$product->getPrice(false, $smarty.const.NULL, 6)} {assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(true, $smarty.const.NULL)} {/if} Y que luego la variable: (viene de {assign var='productPrice..' ...) productPrice.. Puedes ver que en el TPL que tiene distintos usos a la hora de mostrar. .Fijate que realmente la variable (luego muestra el precio) almacena el valor: {$product->getPrice(....)} que es el precio del producto. Por otro lado, fijate que en la clase /classes/Product.php Tienes: function getPrice(...) function getPriceStatic(..) ect... Si sabes manejarte con programación orientada a objetos sabrás llamar a un metodo de una clase, pasarle el valor del producto actual, dependiendo de lo que quieras hacer en el php de tu modulo. Fíjate por ejemplo en el controlador: "/controllers/front/ProductController.php" como hace uso de algunas de las funciones de la clase /classes/Product.php Link to comment Share on other sites More sharing options...
antofer Posted May 14, 2017 Author Share Posted May 14, 2017 Muchas gracias por tu rápida respuesta.....estoy manos a la obra de programacion sé lo basico, basico, lo justo para saber de que va la pelicula pero topandome con errores a cada linea de momento, en mi archivo .php quiero incluir las funciones de Product.php para poder obtener los return de estas y al meter .... require('Product.php'); me da error puesto que el archivo no esta en la misma carpeta que mi php He intentado con muchas combinaciones para indicar donde esta el archivo y lo unico que obtengo es error,error,error mi archivo esta en /modules/NombreModulo/NombreModulo.php y como bien dijistes antes el archivo Product.php en /classes/Product.php Link to comment Share on other sites More sharing options...
ventura Posted May 14, 2017 Share Posted May 14, 2017 Puedes instanciar al objeto product, añadiendo en la funcion del hook $product = new Product((int)Tools::getValue('id_product')); Para los precios $currency = new Currency($params['cookie']->id_currency); $usetax = (Product::getTaxCalculationMethod((int)$this->context->customer->id) != PS_TAX_EXC); $price = Tools::displayPrice(Product::getPriceStatic((int)$product->id_product, $usetax), $currency); Link to comment Share on other sites More sharing options...
nadie Posted May 14, 2017 Share Posted May 14, 2017 Muchas gracias por tu rápida respuesta.....estoy manos a la obra de programacion sé lo basico, basico, lo justo para saber de que va la pelicula pero topandome con errores a cada linea de momento, en mi archivo .php quiero incluir las funciones de Product.php para poder obtener los return de estas y al meter .... require('Product.php'); me da error puesto que el archivo no esta en la misma carpeta que mi php He intentado con muchas combinaciones para indicar donde esta el archivo y lo unico que obtengo es error,error,error mi archivo esta en /modules/NombreModulo/NombreModulo.php y como bien dijistes antes el archivo Product.php en /classes/Product.php No, no, olvídate del require e include en la clase de tu modulo. Lo que dije de la clase era solamente para vieras las funciones y te familiarizaras con ellas. Ya te ha respondido Ventura en el mensaje anterior. Ya nos cuentas algo ) Veras que Ventura dice: $product = new Product((int)Tools::getValue('id_product')); ¿Qué significa esto? Con esto creas un objeto de la clase Product y luego puedes usar los métodos de ese objeto y acceder a sus atributos. Fíjate que le estas pasando al constructor de la clase Product el id del producto actual (int)Tools::getValue('id_product') Función getValue de la clase Tools. (Si tienes interés a nivel de código (aunque supongo que te lo imaginas) que hace la función getValue, lo puedes ver en el fichero /classes/Tools.php) ¿Qué mas nos presenta Ventura? $currency = new Currency($params['cookie']->id_currency); Creamos un objeto de la clase Currency (Moneda) (/classes/Currency.php) al que le pasamos en su constructor el id de la moneda. Sigamos investigando lo que nos presenta Ventura: Por ultimo: $price = Tools::displayPrice(Product::getPriceStatic((int)$product->id_product, $usetax), $currency)); Aquí con la función "displayPrice" de la clase Tools (/classes/Tools.php) mostramos el precio formateado Vemos que le estamos pasando a la función displayPrice lo siguiente: Product::getPriceStatic((int)$product->id_product, $usetax), $currency) La función "getPriceStatic (de la clase Product)" es una de las que te mencione la respuesta anterior. Fijate que a la función getPriceStatic de la clase /classes/Product, estamos pasandole el id del producto, la moneda, Como me gusta que investigues (para que uno aprenda a desenvolverse) también, te dejo investigar que hace: $usetax = (Product::getTaxCalculationMethod((int)$this->context->customer->id) != PS_TAX_EXC); ya que se lo pasamos también a la funcion getPriceStatic. Por cierto, ¿Ala puedo acceder a los métodos getTaxCalculationMethod, getPriceStatic directamente con Product::nombreMetodo? ¿Por que?? Porque son métodos estáticos y no es necesario acceder (ni crear previamente) mediante un objeto de la clase. Entiendase, que estamos hablando de que lo añades dentro de la clase de tu modulo, y dentro de la funcion del hook que vas a usar. Solo te he descrito lo que te ha comentado Ventura pero explicando mas o menos que hace "cada cosa" por si tenias interes en saberlo. Link to comment Share on other sites More sharing options...
pepinca Posted September 8, 2017 Share Posted September 8, 2017 El que busca encuentra. Que a gustito me habéis dejado. GRACIAS. Estaba disfrutando de pelear un poquito con product.php la clase y con vosotros acabo de ver la lúz. ejem en tema de bits . Feliz viernes. 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