Hola! este es mi primer aporte a la comunidad. Hace un tiempo, un cliente me pidio que hiciera un sistema donde se mostraran los productos relacionados en la página Carro de Virtuemart 2. Tuve que afinar el lapiz y mi notepad, puesto que no encontre nada (gratuito) que hiciera exactamente lo que se necesitaba. Entonces decidí montarme todo yo mismo. ¿De que manera? Asi:
- Localizamos el archivo "default_pricelist.php" en la ubicacion (miJoomla)/components/com_virtuemart/views/cart/tmpl/
- Lo abrimos usando un editor de texto decente (notepad++ o similar) o Dreamweaver
- Buscamos la Línea 130 Donde pone:
Código PHP:
foreach( $this->cart->products as $pkey =>$prow ) {
- Le agregamos DIRECTAMENTE DESPUES:
Código PHP:
$miprod = $this->cart->products;
$id_producto = $prow->virtuemart_product_price_id;
Si usamos la logica, las variables $miprod y $id_producto se irán cambiando cada vez que se ejecute el foreach, de modo que siempre tendremos la información del ultimo producto del carro. - Vamos al final del documento. Agregaremos:
Código PHP:
<?php
echo "<br>";
if (!is_null($id_producto)) {
$db = JFactory::getDBO();
$jAp = JFactory::getApplication();
define('L', chr(10));
$q = "SELECT custom_value FROM #__virtuemart_product_customfields WHERE virtuemart_product_id =".$id_producto." LIMIT 4;";
$db->setQuery($q);
$db->query();
if (is_null($posts=$db->loadRowList())) {$jAp->enqueueMessage(nl2br($db->getErrorMsg()),'error'); return;}
$rel_prods = $db->loadResultArray();
}
if (!is_null($rel_prods)) {
?>
<div class="dex-rel_prod">
<h3> Productos Relacionados </h3>
<?php
for( $i = 1; $i < count($rel_prods); $i ++)
{
?>
<div class="product-field product-field-type-R">
<?php
//robando la imagen del producto
$q = "SELECT virtuemart_media_id FROM #__virtuemart_product_medias WHERE virtuemart_product_id=".$rel_prods[$i].";";
$db->setQuery($q);
$resultad_img = $db->loadResult();
$q = "SELECT file_url_thumb FROM #__virtuemart_medias WHERE virtuemart_media_id=".$resultad_img.";";
$db->setQuery($q);
$resul_img = $db->loadResult();
//vamos a por la categoria
$q = "SELECT virtuemart_category_id FROM #__virtuemart_product_categories WHERE virtuemart_media_id=".$rel_prods[$i]." LIMIT 1;";
$db->setQuery($q);
$resul_cat = $db->loadResult();
//Vamos por el titulo
//definimos lenguaje y creamos sufijo
$lang =& JFactory::getLanguage();
$suf = $lang->getTag();
$suf = strtolower($suf);
$suf = str_replace('-','_',$suf);
//vamos a la tabla de virtuemart en cuestion
$q = "SELECT product_name FROM #__virtuemart_products_".$suf." WHERE virtuemart_product_id=".$rel_prods[$i].";";
$db->setQuery($q);
$resul_tit = $db->loadResult();
//url
$resul_url = "index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=".$rel_prods[$i];
//armando todo
?>
<a href="<?php echo $resul_url; ?>"> <img src="<?php echo $resul_img; ?>"/></a><br/>
<a href="<?php echo $resul_url; ?>"> <?php echo $resul_tit; ?> </a>
</div>
<?php } ?>
</div>
<?php
}
else{
echo "no se encontraron productos relacionados";
};
?>
- Y... Lísto!! Se mostrarán cuatro productos relacionados al último producto agregado al carrito. Si necesitais otra cantidad de productos , simplemente cambiad el número "LIMIT" de esta variable:
Código PHP:
$q = "SELECT custom_value FROM #__virtuemart_product_customfields WHERE virtuemart_product_id =".$id_producto." LIMIT 4;";
. Si necesitais, por ejemplo, que muestre 6 productos, colocan:
Código PHP:
$q = "SELECT custom_value FROM #__virtuemart_product_customfields WHERE virtuemart_product_id =".$id_producto." LIMIT 6;";
- Luego, claro, le dan algún estilo a los divs creados usando CSS.
Resultado Final (Con retoques CSS. No os riais de mis colores, la web es de una floreria):
Bueno, eso es todo por hoy y espero que les haya gustado
Chau!