<?php
if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
global $mosConfig_absolute_path, $sess;
// Load the VirtueMart main parse code
if( file_exists(dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' )) {
require_once( dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' );
} else {
require_once( dirname(__FILE__).'/../components/com_virtuemart/virtuemart_parser.php' );
}
require_once(CLASSPATH.'ps_product.php');
$ps_product = new ps_product;
// change the number of items you wanna haved listed via module parameters
$num_topsellers = $params->get ('num_topsellers', 10);
$category = $_GET["category_id"];
$manufacturer = $_GET["manufacturer_id"];
if (!empty ($category)) {
$list = "SELECT p.product_id, p.product_sales as sales, p.product_parent_id, p.product_thumb_image, p.product_name,
d.product_price,
c.category_id, c.category_flypage ";
$list .= "FROM #__{vm}_product p, #__{vm}_product_price d,
#__{vm}_product_category_xref pc, #__{vm}_category c WHERE ";
$q = "p.product_publish='Y' AND ";
$q .= "pc.product_id = p.product_id AND ";
$q .= "p.product_id = d.product_id AND ";
$q .= "pc.category_id = $category AND ";
$q .= "p.product_sales > 0 ";
$q .= "GROUP BY p.product_id ";
$q .= "ORDER BY sales DESC, p.product_name ";
$list .= $q . " LIMIT 0, $num_topsellers ";
}
elseif (!empty ($manufacturer)) {
$list = "SELECT p.product_id, p.product_sales as sales, p.product_parent_id, p.product_thumb_image, p.product_name,
d.product_price,
c.manufacturer_id, c.mf_name ";
$list .= "FROM #__{vm}_product p, #__{vm}_product_price d,
#__{vm}_product_mf_xref pc, #__{vm}_manufacturer c WHERE ";
$q = "p.product_publish='Y' AND ";
$q .= "pc.product_id = p.product_id AND ";
$q .= "p.product_id = d.product_id AND ";
$q .= "pc.manufacturer_id = c.manufacturer_id AND ";
$q .= "pc.manufacturer_id = $manufacturer AND ";
$q .= "p.product_sales > 0 ";
$q .= "GROUP BY p.product_id ";
$q .= "ORDER BY sales DESC, p.product_name ";
$list .= $q . " LIMIT 0, $num_topsellers ";
}
else {
$list = "SELECT p.product_id, p.product_sales as sales, p.product_parent_id, p.product_thumb_image, p.product_name,
d.product_price,
c.category_id, c.category_flypage ";
$list .= "FROM #__{vm}_product p, #__{vm}_product_price d,
#__{vm}_product_category_xref pc, #__{vm}_category c WHERE ";
$q = "p.product_publish='Y' AND ";
$q .= "pc.product_id = p.product_id AND ";
$q .= "p.product_id = d.product_id AND ";
$q .= "pc.category_id = c.category_id AND ";
$q .= "p.product_sales > 0 ";
$q .= "GROUP BY p.product_id ";
$q .= "ORDER BY sales DESC, p.product_name ";
$list .= $q . " LIMIT 0, $num_topsellers ";
}
$db = new ps_DB;
$db->query($list);
$tt_item=0;
$i = 0;
?>
<div class="top_ten_products">
<?php
while ($db->next_record()) {
if ($i == 0) {
$i += 1;
}
else {
$i -= 1;
}
if( !$db->f('category_flypage') ) {
$flypage = ps_product::get_flypage( $db->f('product_id'));
}
else {
$flypage = $db->f('category_flypage');
}
$tt_item++;
$pid = $db->f("product_parent_id")? $db->f("product_parent_id") : $db->f("product_id");
$pricedisplay = $ps_product->show_price($db->f("product_id"));
?>
<div class="top_ten_product">
<a title="<?php echo $db->p("product_name"); ?>" href="<?php $sess->purl(URL . "index.php?page=shop.product_details&flypage=$flypage&product_id=" . $pid . "&category_id=" . $db->f("category_id"))?>"><img src="components/com_virtuemart/shop_image/product/<?php $db->p("product_thumb_image");?>" border="0" /></a><br />
<strong><?php echo $db->p("product_name"); ?></strong>
<div class="top_ten_price"><?php echo $pricedisplay; ?></div>
<a title="<?php echo $db->p("product_name"); ?>" href="<?php $sess->purl(URL . "index.php?page=shop.product_details&flypage=$flypage&product_id=" . $pid . "&category_id=" . $db->f("category_id"))?>">+ Product Details</a>
</div>
<?php
} ?>
</div>
Если пользователь на главной или еще где, - показывает топ продаваемых из всех товаров. Если на странице категории - топ из этой категории. Если переходим на страницу товаров производителя - топ товаров этого производителя из разных категорий.
Если можно как-то оптимизировать код, - было бы не плохо.