0 Пользователей и 1 Гость просматривают эту тему.
  • 29 Ответов
  • 3963 Просмотров
*

x-render

  • Осваиваюсь на форуме
  • 25
  • 2
Здравствуйте. Подскажите пожалуйста как вывести в карточке товара другие товары (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) отсеялись товары которые не опубликованы.

Делалось на скорую руку главное чтоб работало, как будет время приведу это все в порядок.
Точно также можно сделать вывод "Сопутствующих товаров", не много только поменять переменные и убрать лишнее.
« Последнее редактирование: 08.05.2013, 16:21:45 от x-render »
*

x-render

  • Осваиваюсь на форуме
  • 25
  • 2
Решено своими силами. Сегодня - завтра выложу решение.
*

melkiialex

  • Осваиваюсь на форуме
  • 152
  • 0
Гуд но только вставил так
Код
<?php echo $this->loadTemplate('pohozie');?>
но вот вопрос как сделать, что бы было как и в сопутствующих товарах - 4 товара горизонтально, и максимум 2 ряда
то есть две строки по 4 товара?
*

x-render

  • Осваиваюсь на форуме
  • 25
  • 2
Цитировать
Гуд но только вставил так
Код
<?php echo $this->loadTemplate('pohozie');?>
Спасибо, поправил в описании.
Цитировать
но вот вопрос как сделать, что бы было как и в сопутствующих товарах - 4 товара горизонтально, и максимум 2 ряда
то есть две строки по 4 товара?
Если не использовать карусель, то нужно остановить цикл после 8-го товара. Блок куда выводятся товары сделать фиксированной ширины и высотой в 2 блока с 1 товаром, блок с 1 товаром 1/4 от ширины основного блока и float:left. Ну как-то так. =)
*

melkiialex

  • Осваиваюсь на форуме
  • 152
  • 0
Спасибо, буду ломать голову как сделать каждому товару фиксированную ширину и что бы горизонтально располагалась 4 товара в 1 строке,
*

melkiialex

  • Осваиваюсь на форуме
  • 152
  • 0
Как к твоему файлу подключить CSS с папки шаблона, как понимаю писать надо в файле default_pohozie.php - но что писать?
*

x-render

  • Осваиваюсь на форуме
  • 25
  • 2
Можно подключить в основном файле шаблона где весь <head> описан или же в основном файле CSS прописать стили
*

melkiialex

  • Осваиваюсь на форуме
  • 152
  • 0
а пример кода подключения CSS можно?
*

x-render

  • Осваиваюсь на форуме
  • 25
  • 2
в каждом шаблоне по разному. у меня в папке шаблона в index.php
Код
<link rel="stylesheet" href="<?php echo $document->baseurl; ?>/templates/system/css/general.css" />
Шаблон сделан в Artisteer 4. Посмотрите как основые CSS у вас подключаются.
*

melkiialex

  • Осваиваюсь на форуме
  • 152
  • 0
Спасибо вывел 5 товаров в строку, но как сделать перенос на следующею строку не знаю, хотелось бы 4 строки по 5 товаров в строке, как настроить CSS  !
*

x-render

  • Осваиваюсь на форуме
  • 25
  • 2
Дайте ссылку на страницу товара где вы это сделали.
*

artlux

  • Завсегдатай
  • 468
  • 58
после каждых 5 товаров в строке должно выводится
Код
<div style="clear:both;"></div>
ну а если вдруг высота карточки фиксированая - то можно зафиксировать блоки и float:left;
Код
.myblock {display:block;height:300px;float:left;overflow:hidden;}


если вывод табличный - то тут только в коде подправляться надо
Разработка расширений: Joomla 1.5+, Bitrix 12+, Мобильные приложения для сайтов под Android (PhoneGap).
Для бонусов: Z136221252622, R242724126443, U423945028202. +79211696184(Мегафон), или плюсик в репу!
*

melkiialex

  • Осваиваюсь на форуме
  • 152
  • 0
у меня на локалке
а как задать параметр после каждых 5 товаров в строке должно выводится <div style="clear:both;"></div>
как понимаю у вас в коде я поставил лимит
Код
$q .= ' ORDER BY RAND() LIMIT 15';

Стили пока что сделал так

.carousel {}
.carousel-wrapper { }

Для одного товара
.carousel-block { width: 160px; margin-right: 8px; margin-left: 8px; display: table-cell; } - тут методом тыка display: table-cell - позволил вывести в строку, а не столбик товары, если убрать то они будут идти в столбик 15 штук.
Смотрю firebugом все товары идут в одну строку и она длинная, естественно на экране отображаются только те что влезают в поле сайта.

Все запутался совсем.
*

x-render

  • Осваиваюсь на форуме
  • 25
  • 2
в цикле вместо $x++
Код
if ($x==5) {
echo '<div style="clear:both;"></div>';
$x==0;}
а после $link = 'index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $prod_id->virtuemart_product_id.'&virtuemart_category_id=' . $prod_cat_id;

вставте
Код
$x++;
.carousel-block { width: 160px; margin-right: 8px; margin-left: 8px; float:left; }

У вас с каруселью?
« Последнее редактирование: 09.05.2013, 16:00:28 от x-render »
*

melkiialex

  • Осваиваюсь на форуме
  • 152
  • 0
нет без карусели, так как не понял как ее подключать
*

x-render

  • Осваиваюсь на форуме
  • 25
  • 2
тогда для .h-carousel-items{width: 100%;}
*

melkiialex

  • Осваиваюсь на форуме
  • 152
  • 0
Блин в стало опять в колонку одну все 15 товаров.

А можно тут целый код страницы default_pohozie.php  :D
*

artlux

  • Завсегдатай
  • 468
  • 58
Потестил хак... Уходит около 40 запросов в БД (выводится 2 товара)...

Может стоит это дело переписать в модуль, и кешировать данные... ?! Если кому интерестно могу сделать модуль из того что есть...
Разработка расширений: Joomla 1.5+, Bitrix 12+, Мобильные приложения для сайтов под Android (PhoneGap).
Для бонусов: Z136221252622, R242724126443, U423945028202. +79211696184(Мегафон), или плюсик в репу!
*

melkiialex

  • Осваиваюсь на форуме
  • 152
  • 0
Да было бы интересно, так как в ручную на VirtueMart 2 добавлять сопутствующие товары очень долго, если их еще больше 1000 например, так бы было классно когда автоматом выводятся снизу в несколько строк и колонок товары с категории товара который открыт.
*

artlux

  • Завсегдатай
  • 468
  • 58
Цитировать
добавлять сопутствующие товары очень долго

так решение вроди не связано с ними... а просто выводит товары из категории...
В модуль впринципе можно добавить фильтры (по настраиваемым полям и т.п. опционально, если это комуто пригодится)...
Разработка расширений: Joomla 1.5+, Bitrix 12+, Мобильные приложения для сайтов под Android (PhoneGap).
Для бонусов: Z136221252622, R242724126443, U423945028202. +79211696184(Мегафон), или плюсик в репу!
*

x-render

  • Осваиваюсь на форуме
  • 25
  • 2
Да я собирался все это в порядок привести как время появится и в модуль сделать, но пока нет возможности проекты горят сроки. Делалось на скорую руку и для отдельного магазина поэтому для всех остальных нужно допиливать. Выводится 2 товара наверное потому что попалось много неопубликованных =)
*

artlux

  • Завсегдатай
  • 468
  • 58
Цитировать
Выводится 2 товара наверное потому что попалось много неопубликованных
да там их по 3 в категории и есть... я на демке смотрел... Глянул сколько это дело запросов в бд загонит с кешем включенным (вот на двух товарах гдето 40шт)...

Можно сделать хороший модуль впринципе, мысли что в нем нужно можно вылаживать... Мне сейчас заняться нечем могу состряпать...
Разработка расширений: Joomla 1.5+, Bitrix 12+, Мобильные приложения для сайтов под Android (PhoneGap).
Для бонусов: Z136221252622, R242724126443, U423945028202. +79211696184(Мегафон), или плюсик в репу!
*

x-render

  • Осваиваюсь на форуме
  • 25
  • 2
Думаю много кому пригодится такая примочка, потому что очень часто просят вывести в карточку товара еще какие-нить товары, а средствами сопутствующих товаров это не реально сделать особенно если их тысячи. Да и не плохая перелинковка страниц и товаров получается. По сути там думаю пару настроек только надо, т.е. количество выводимого товара и использовать или нет слайдер, это если самый простой делать модуль.
*

artlux

  • Завсегдатай
  • 468
  • 58
1. Количество выводимого товара возможность менять
2. Использовать все категории или только текущую
3. шаблон вывода слайдер, либо обычный
4. возможность задавать фильтры по настраиваемым полям (если полей текущего товара = с полем 1 выбираемых товаров) - тут сложнее реализация, но вполне возможно сделать...
5. Использование кеширования (кеш по ид товара, либо по ид категории(с категорией скорее не получится - много ньюансов))...

Если дополнений не будет - делаю в таком варианте...
Разработка расширений: Joomla 1.5+, Bitrix 12+, Мобильные приложения для сайтов под Android (PhoneGap).
Для бонусов: Z136221252622, R242724126443, U423945028202. +79211696184(Мегафон), или плюсик в репу!
*

x-render

  • Осваиваюсь на форуме
  • 25
  • 2
ну может еще разброс по ценам добавить (выводить товары с ценой +/- столько-то от цены текущего)?
Было бы конечно круто еслиб такой модуль получился.  ^-^
*

melkiialex

  • Осваиваюсь на форуме
  • 152
  • 0
И настройка вывода, случайно, по дате, а так же горизонтальный и вертикальный вывод и если горизонтальный то количество строк.
Вот только наверное будет один минус, от кода который выше, так как он выводит именно под открытым товаром товары с его категории, что очень удобно, чем то похоже на сопутствующие товары - и это очень важно
*

artlux

  • Завсегдатай
  • 468
  • 58
готово http://joomlaforum.ru/index.php/topic,263102.0.html

по остальному буду дорабатывать... Пока так как есть...
« Последнее редактирование: 10.05.2013, 01:01:52 от artlux »
Разработка расширений: Joomla 1.5+, Bitrix 12+, Мобильные приложения для сайтов под Android (PhoneGap).
Для бонусов: Z136221252622, R242724126443, U423945028202. +79211696184(Мегафон), или плюсик в репу!
*

x-render

  • Осваиваюсь на форуме
  • 25
  • 2
 :D Браво. Это конечно круто получилось. Полная замена стандартному "mod_virtuemart_product".
*

iliya_art

  • Осваиваюсь на форуме
  • 133
  • 7
решил использовать на VirtueMart 3 , работает но не выводит изображения, подскажите пожалуйста как сделать правильную ссылку на изображения?
насколько я понял править надо тут:
Код
<a href="<? echo $link; ?>"><img src="<? echo $prod_image; ?>" style="height:100px;" /></a>
*

iliya_art

  • Осваиваюсь на форуме
  • 133
  • 7
Прошу помощи, слайдер работает, ссылки работают - но вот картинки не вытягивает. Может кто решал на VirtueMart 3.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Большой обём изображений товаров Virtueart

Автор yrygvay

Ответов: 1
Просмотров: 17
Последний ответ 23.09.2017, 17:39:49
от robert
количество дополнительных изображений товара на витрине и в категории

Автор kasper9820

Ответов: 2
Просмотров: 102
Последний ответ 23.08.2017, 14:45:17
от Liss
Конструктор товара

Автор tagilnext

Ответов: 0
Просмотров: 61
Последний ответ 13.08.2017, 13:07:24
от tagilnext
Модуль для отображения товаров VirtueMart 3 с помощью адаптивной карусели-слайдера с ленивой загрузк

Автор borro

Ответов: 25
Просмотров: 2614
Последний ответ 11.08.2017, 17:41:26
от Akeksandr
[Решено] Как сортировать товар в новой версии?

Автор fotoweb

Ответов: 20
Просмотров: 10922
Последний ответ 03.08.2017, 09:59:33
от Marcello