Jump to content

Obtener datos del producto activo


Recommended Posts

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

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

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

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

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.

 

:D 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

  • 3 months later...

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...