Jump to content

Dudas Relacionadas Con Tpl


zuzunai

Recommended Posts

Buenos dias,

 

tengo un pequeño problema con el apartado producto (donde se muestran los detalles de uno en concreto).

 

Mi problema principal es que en el tpl (digamos en ejecución) necesito saber que color esta seleccionado.

 

Tengo una funcion js que me devuelve el color (llamemosla color()) ésta sé que funciona ya que con un alert me muestra correctamente el color seleccionado (su id para ser mas especifico).

 

Por otro lado tengo una funcion php (getTallasInStock($color)) (desde la clase class/product.php) que me hace una consulta sobre temas relacionados con stock y tallas (basicamente me devuelve las tallas que tienen stock para introducirlas en el select en funcion del color).

 

Ambas funciones van correctamente ya que a esta segunda si le paso el color manualmente trabaja correctamente.

 

Mi duda es:

 

- Como almaceno en una variable TPL el resultado de color()?

- o sino como puedo introducir el return de color() en la llamada a getTallasInStock($color);

 

He provado cosas como:

 

Esto va en product.tpl

 

- {assign var="colorActual" value="javascript:color();"}(sus variantes sin el javascript, sin comillas dobles, etc...)

He probado en el script donde estan las variables:

- var colorActual = color();

pero creo que no es asi porque tanto colorActual como las demas, siendo llamadas desde tpl ({l s=$colorActual}) no las encuentra.

- he probado en el getTallasInStock(color());

 

Espero haberme expresado correctamente,

 

Ante todo muchissimas gracias.

 

Att. Artur.

Link to comment
Share on other sites

no se si entendi bien, te doy un ejemplo hecho en teoria:

 

en getTallasInStock

self::$smarty->assign(array('tu-variable' => $tuvariable_color	));
}
	public function displayContent()
{
	parent::displayContent();
	self::$smarty->display(_PS_THEME_DIR_.'product.tpl');
}

 

en producto tpl

	{$tu-variable}

 

a un que no se funcara :mellow:

 

otro que se me ocurre

 

		$smarty->assign(array(
       	'tu-variable' => $tuvariable-color
	));

    	$this->display(Tools::getShopDomainSsl(true, true).__PS_BASE_URI__._PS_THEME_DIR_.'product.tpl');

 

en product

		 {$tu-variable}

 

 

por ultimo un ejemplo mas sencillo seria:

 

$smarty->assign(array('tuvariable' => $tuvariable-color));
$smarty->display(__PS_BASE_URI__._PS_THEME_DIR_.'product.tpl');

 

en producttpl

{$tuvariable}

 

 

en algo asi...

 

saludos

Link to comment
Share on other sites

El problema que tengo no es de css,

 

Me has dado algunas ideas, aun asi el getTallasInStock no es el problema en si, ya que si le paso un 5 manualmente me lo hace bien (5 es un color concreto) sabes si se puede tocar smarty desde js? te pongo el codigo por si te sirve.

 

En el js: (themes/mitema/js/product.js)

function color(){

var idColor = document.getElementById('group_2').selectedIndex;

var colorNum = document.getElementById('group_2').options[idColor].value;

if (colorNum) return colorNum;

else return 0;

}

 

En el php: (classes/product.php)

public function getCombinationsStock($color=0){

$cons = '

SELECT al.`name`, al.`id_attribute` as id

FROM `'._DB_PREFIX_.'product_attribute` pa

LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON (pa.`id_product_attribute` = pac.`id_product_attribute`)

LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (pac.`id_attribute` = al.`id_attribute`)

LEFT JOIN `'._DB_PREFIX_.'attribute` a ON (pac.`id_attribute` = a.`id_attribute`)

 

WHERE pa.`id_product` = '.(int)($this->id).' AND

(a.`id_attribute_group` = 4 OR a.`id_attribute_group` = 5) AND

pa.`quantity` > 0 AND

al.`id_lang` = 3 ';

 

if($color!=0){

$cons.='AND pac.`id_product_attribute` IN ( SELECT `id_product_attribute`

FROM `'._DB_PREFIX_.'product_attribute_combination`

WHERE `id_attribute` = '.$color.' )';

}

 

$result = Db::getInstance()->ExecuteS($cons);

return $result;

}

 

En el tpl: (themes/mitema/product.tpl)

{assign var="tallasStock" value=$product->getCombinationsStock(5)}

 

Necesito que en vez del 5 pueda poner de alguna forma lo que devuelve color() del js.

 

Se que es un tema complicado y todo esto lo he hecho a mano con lo que puede tener errores.

 

Voy a ir mirandome si con smarty (que no lo he tocado nunca xD) puedo hacer algo.

 

Gracias por responder tan pronto y si veis algo os lo agradecere eternamente ^^

 

Un saludo,

 

Att. Artur.

Link to comment
Share on other sites

Por cierto (todo esto me ayuda a aprender)

 

Pero para el problema concreto que tengo si sabeis que variable maneja desde tpl el color actual tb me serviria.

 

se que existe $colors con el array de colores del producto

 

que por cada color tienes $color.value (con el color en #ffffff)

 

pero no se decirle por ejemplo

 

{if $color.selected}

 

Gracias una vez mas,

 

Att. Artur.

Link to comment
Share on other sites

no se prueba asi :

 

{assign var='tallasStock' value=$product->getCombinationsStock(color())}

 

o sea llama a la funcion dentro () en teoria si tu dice que camina con 5 debe fucionar.

 

pero deberia probar cargando el 5 en la funcion no en llamada, por que el hecho de que te funcione con el cinco merido ahi no quiere decir que tu funcion valla a funcionar.

 

 

otra opcion seria utilizar

 document.write

cambiando en var del js

 

 

 

tambien creo que tu funcion color deberia ir directamente en el archivo product.tpl

 

saludos!

Link to comment
Share on other sites

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