Jump to content

Variable $products product-list.tpl


carltorres

Recommended Posts

Hola, creo este hilo para ver si alguien conociese el origen de la variable "$products" que es utilizada en el fichero "product-list.tpl".

Este fichero es uno de los .tpl que no se incluyen dentro de ninguno de los módulos, por lo que no tengo ni idea de a qué clase pertenecerá la variable.

Tengo especial interés en conocerla dado que accede a algunos atributos como $product.link el cual no ha sido definido en la clase y me gustaría utilizarla para finalizar el módulo que estoy desarrollando.

También me sorprende que realice un acceso a los atributos utilizando un "." en lugar de "->" (esto nunca antes lo había visto). ¿Esto por qué es? ¿Por ser un puntero y no un objeto o algo así?

Muchas gracias de antemano.

 

Link to comment
Share on other sites

dentro del tpl para acceder a un array tiene que hacerlo con el "." mira (creo estoy al 70% seguro) puedes mirar que contiene usando una print_r {$product|@print_r} y ahjora mismo no me acuerdo en que clase esta pero la he visto... cuando lo vea te lo digp

  • Like 1
Link to comment
Share on other sites

Muchas gracias Fernando91!

La clase me haría falta, la verdad, ya que me interesara cargar la imagen por defecto de los productos (y no tengo ni idea de en qué tabla de la base de datos puede estar definida dicha imagen) así como un enlace que redirija a su página.

Para generar el enlace a la página del producto conozco la existencia del atributo "link_rewrite" de la clase "Product" pero al utilizar éste, si accedo al enlace, me abre todo el árbol de categorías según la categoría del producto. ¿Alguna idea para cerrar este enlace (¿Los ficheros .tpl permiten el uso directo de JQuery?)?

Link to comment
Share on other sites

Muchas gracias Fernando91!

La clase me haría falta, la verdad, ya que me interesara cargar la imagen por defecto de los productos (y no tengo ni idea de en qué tabla de la base de datos puede estar definida dicha imagen) así como un enlace que redirija a su página.

Para generar el enlace a la página del producto conozco la existencia del atributo "link_rewrite" de la clase "Product" pero al utilizar éste, si accedo al enlace, me abre todo el árbol de categorías según la categoría del producto. ¿Alguna idea para cerrar este enlace (¿Los ficheros .tpl permiten el uso directo de JQuery?)?

Respecto lo del jquery si que peudes ponerlo directamente en el tpl, lo que no entiendo es la otra parte de la pregunta que quieres hacer si quieres acceder a un producto en concreto le tendras que pasar de alguna manera la id de ese producto este tsaasmbien deberia darle el link del producto pero le tiene q pasar la id de este, no se de donde la quieres coger

$link->getProductLink
Link to comment
Share on other sites

Pensaba sacar el link a partir del atributo $product->link_rewrite (no sé por qué me empeñé en eso =S) y no utilizando la clase Link.

Ese problema ya lo solucioné observando otros "tpl", aún así muchas gracias de nuevo Fernando91.

Me gustaría hacer una última pregunta:

¿Conoces el nombre de la tabla en la que se encuentra la imagen de portada de los productos? Llevo toda la mañana buscándola y no doy con ella =S

Link to comment
Share on other sites

 

Los ficheros .tpl permiten el uso directo de JQuery

 

Los ficheros tpl son plantillas smarty que se compilan a php, es decir son php. Digamos que es php de presentación puro y duro, y se ocupa de generar el htm necesario (mientras que el trabajo de base de datos se hace en los modelos y los controladores se ocupan de orquestarlo todo). A parte de html puede generar también reglas css y javascript (Jquery) por lo que a veces encontraras cosas como:

// Parameters
var id_product = '{$product->id|intval}';
var productHasAttributes = {if isset($groups)}true{else}false{/if};

para iniciar variables javascript.

 

 

Tiene su propia sintaxis mas enfocada a gente que se dedica a maquetación por lo que p.ej como te comentan mas arriba los arrays se puede acceder con . mientras que los objetos continúan usando ->.

 

Puedes encontrar información en la página oficial de smarty, pero lo mejor es ir mirando código de otras plantillas

 

Para sacar info de la imagen de portada de un producto tienes la función estática de la clase Image getCover :

/**
	 *Get product cover
	 *
	 * @param integer $id_product Product ID
	 * @return boolean result
	 */
	public static function getCover($id_product)
	{
		return Db::getInstance()->getRow('
			SELECT * FROM `'._DB_PREFIX_.'image` i'.
			Shop::addSqlAssociation('image', 'i').'
			WHERE `id_product` = '.(int)$id_product.'
			AND image_shop.`cover`= 1');
	}

Con el tema de la multitienda, tienes que buscar los atributos en las tablas que acaban en _shop ya que ahí es donde se leen realmente los datos (todo y que no uses multitienda y en la tabla sin _shop exista igualmente ese campo)

  • Like 1
Link to comment
Share on other sites

  • nadie locked this topic
Guest
This topic is now closed to further replies.
×
×
  • Create New...