Здравствуйте. Подскажите пожалуйста как вывести в карточке товара другие товары (10 штук) из этой же категории. Так же как это делает "mod_virtuemart_product" , но он может показывать товары только из указанных категорий. Использование сопутствующих товаров не подходит. Заранее спасибо.
-----------------------------------------------------------------------------------------
Стояла задача:
В карточке товара вывести в виде карусели товары этой же категории.
Решение:1). Создаем файл
default_pohozie.php в директории
/components/com_virtuemart/views/productdetails/tmpl/ следующего содержания:
<?php
defined ( '_JEXEC' ) or die ( 'Restricted access' );
$model = new VirtueMartModelProduct();
$calculator = calculationHelper::getInstance();
$currency = CurrencyDisplay::getInstance();
$this_prod=$this->product->virtuemart_product_id;
$prod_cat_id=$this->product->virtuemart_category_id;
$db = JFactory::getDBO();
$q = 'SELECT * FROM `#__virtuemart_product_categories`';
$q .= ' WHERE `virtuemart_category_id` = "'.$prod_cat_id.'"';
$q .= ' ORDER BY RAND() LIMIT 50';
$db->setQuery($q);
$poh_prod_id = $db->loadObjectlist();
?>
<h4>Похожий товар:</h4>
<div class="b-carousel">
<div class="b-carousel-button-left"></div>
<div class="b-carousel-button-right"></div>
<div class="h-carousel-wrapper">
<div class="h-carousel-items">
<?
$x=1;
foreach ($poh_prod_id as $prod_id){
if ($prod_id->virtuemart_product_id != $this_prod){
$poh_product = $model->getProductSingle($prod_id->virtuemart_product_id,false);
$price = $calculator -> getProductPrices($poh_product);
if ($poh_product->published ==1) {
$q = 'SELECT * FROM `#__virtuemart_product_medias`';
$q .= ' WHERE `virtuemart_product_id` = "'.$prod_id->virtuemart_product_id.'" AND `ordering` = "1"';
$db->setQuery($q);
$imeg_id = $db->loadObjectlist();
foreach ($imeg_id as $imege_id){
$prod_img_id=$imege_id->virtuemart_media_id;
}
$q = 'SELECT * FROM `#__virtuemart_medias`';
$q .= ' WHERE `virtuemart_media_id` = "'.$prod_img_id.'"';
$db->setQuery($q);
$pr_img = $db->loadObjectlist();
foreach ($pr_img as $prod_img){
$prod_image=$prod_img->file_url_thumb;
}
$link = 'index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $prod_id->virtuemart_product_id.'&virtuemart_category_id=' . $prod_cat_id;
?>
<div class="b-carousel-block" style="overflow:hidden">
<a href="<? echo $link; ?>"><img src="<? echo $prod_image; ?>" style="height:150px;" /></a>
<div class="PricesalesPrice" style="margin:10px 0"><span class="PricesalesPrice" style="font-size:18pt; font-weight:normal"><?
if($price['salesPrice'] != 0) {
echo $currency->priceDisplay($price['salesPrice']);
} else {
echo $currency->priceDisplay($price['priceWithoutTax']);} ?>
</span></div>
<h2 class="vm_prod_title" style="font-size:14px; font-weight:normal"><a href="<? echo $link; ?>"><? echo $poh_product->product_name; ?></a></h2>
</div>
<?
$x++;
}
}
} ?>
</div>
</div>
</div>
Извините за качество кода, но причесывать его нет времени.
2). В файле
/components/com_virtuemart/views/productdetails/tmpl/default.php в том месте где нам нужно вывести эти товары вставляем
<?php echo $this->loadTemplate('pohozie'); ?>
3). Если нужно сделать каруселью это все дело, то идем на
http://www.yanajy.com/sdelay-sam/jQuery-carousel.html и берем от туда скрипт и СSS, подключаем их все должно работать.
В моем случае (так как товаров тысячи) я сделал вот тут ' ORDER BY RAND() LIMIT 50' случайный выбор 50 ID товаров для вывода и то это много. Но вот тут if ($poh_product->published ==1) отсеялись товары которые не опубликованы.
Делалось на скорую руку главное чтоб работало, как будет время приведу это все в порядок.
Точно также можно сделать вывод "Сопутствующих товаров", не много только поменять переменные и убрать лишнее.