[Помощь] Недавно просмотренные товары в отдельном модуле

otdushina

Постоялец
Регистрация
10 Янв 2013
Сообщения
118
Реакции
1
Темы подходящей не нашла, пишу здесь.
Надо недавно просмотренные товары в отдельном модуле чтобы отображать его на на тех страницах, на которых я хочу.
С фото и кнопкой купить желательно.
Вот здесь реализовал чел,

у меня тоже получилось, но выдается списком только 3 товара, а хотелось бы штук 10. Может кто знает как сделать.
 
можно сделать через настройки магазина, настройки - шаблоны, Показать рекомендуемые товары - и там ниже поля: Количество рекомендуемых товаров, товаров в строке

либо прямо в функции указать эти значения, вот здесь

Код:
$recent_products_rows = VmConfig::get('recent_products_rows'); // set in VM admin panel
$products_per_row = VmConfig::get('homepage_products_per_row'); // set in VM admin panel
$recent_products_count = $products_per_row * $recent_products_rows; // get max recent products count
 
Меня интересует модуль недавно просмотренные товары, который по умолчанию только на главной странице.
В админке такие настройки
настройки последние товары.jpgпоследние товары.jpg
На втором рисунке то что получилось, но изображается только 3 товара как и на главной, никакие настройки не действуют.
Не знаю как убрать промежуток между списком и началом блока (Вы смотрели).
Использованный код:

Код:
<?php
 
 
function getRecentProducts($currentId){
$actualIds=false;
$rProducts=false;
 
$rSession = JFactory::getSession();
$rIds = $rSession->get('vmlastvisitedproductids', array(), 'vm'); // get recent viewed from browser session
if (is_array($rIds)){
foreach($rIds as $rId){
if ($rId!=$currentId) $actualIds[]=$rId; // cut out from array currently viewed product
}
}
 
if (is_array($actualIds)){
if (!class_exists('VirtueMartModelProducts')) // check possible if VM products class exists
JModel::addIncludePath(JPATH_VM_ADMINISTRATOR . DS . 'models'); // if not exists, add them
$rModel = JModel::getInstance('Product', 'VirtueMartModel');
 
$recent_products_rows = VmConfig::get('recent_products_rows'); // set in VM admin panel
$products_per_row = VmConfig::get('homepage_products_per_row'); // set in VM admin panel
$recent_products_count = $products_per_row * $recent_products_rows; // get max recent products count
 
$rProducts = $rModel->getProducts($actualIds, false, false); // no front, no calc, only published
}
if (is_array($rProducts)) $rProducts=array_slice($rProducts,0,$recent_products_count); // return only allowed num of products
 
return $rProducts;
}
 
$recentProducts=getRecentProducts($this->product->virtuemart_product_id);
if ($recentProducts){ // if we get recent products, display them
?>
<div class="product-recent-products">
<h2>Recently viewed products:</h2>
<ul class="recent-list">
<?php
foreach ($recentProducts as $rProduct) {
?>
<li>
<a href="<?php echo JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id='.$rProduct->virtuemart_product_id.'&virtuemart_category_id='.$rProduct->virtuemart_category_id); ?>">
<?php echo $rProduct->product_name; ?>
</a>
</li>
<?php } ?>
</ul>
</div>
<?php }?>
 
otdushina а можно ссылку на Ваш сайт, попробую помочь с промежутком между блоком и списком
 
При переносе на рабочий проект нашла свой косяк, промежуток убрала. Вопрос как изменить количество товаров остается актуальным (очень), еще где-то на просторах интернета видела магазин, где при наведении на список просмотренных товаров показывается миниатюра во всплывающем окне.
Такая вещь нужна любому магазину, может кто решит.
Код вставляла через компонент jumi, потому что плагин sourcer потребовал PHP 5.3.
 
При переносе на рабочий проект нашла свой косяк, промежуток убрала. Вопрос как изменить количество товаров остается актуальным (очень), еще где-то на просторах интернета видела магазин, где при наведении на список просмотренных товаров показывается миниатюра во всплывающем окне.
Такая вещь нужна любому магазину, может кто решит.
Код вставляла через компонент jumi, потому что плагин sourcer потребовал PHP 5.3.
В файле components\com_virtuemart\helpers\shopfunctionsf.php найти строку и поставить нужное вам значение вместо 3х
Код:
$maxSize = VmConfig::get('max_recent_products',3);
 
не могу создать отдельную тему, поэтому спрошу тут.
Допилил стандартный плагин недавно просмотренных товаров, теперь выводится: картинка, название товара, цена и кнопка купить. Выглядит вот так (joomla 1.5 virtuemart 1.1.9)
vm_tov.png


Количество недавно просмотренных товаров устанавливается в настройках вирта
Кто подскажет, как сделать скроллинг строки, что бы весь список не выводился,
были например видны только три товара и стрелки вправо-влево?
 
Кто подскажет, как сделать скроллинг строки, что бы весь список не выводился,
были например видны только три товара и стрелки вправо-влево?
Поскольку ответов может быть не менее десятка, отвечу проще - гуглим самый обыкновенный скроллер на том же JS и вписываем его в этот модуль.
Других ответов быть не может.
 
Попробуйте это добавить во фронтпэйдж (joomla 2.5 virtuemart 2 )
PHP:
<?php
shopFunctionsF::addProductToRecent($this->product->virtuemart_product_id);
$this->product->recent =  shopFunctionsF::getRecentProductIds();
foreach($this->product->recent AS $key=>$recentitem) $ritems .= $recentitem.',';
$ritems = preg_replace('/,$/is','',$ritems);
$db =& JFactory::getDBO();
$query = '
SELECT a.*,b.*,c.product_name AS title FROM #__virtuemart_product_medias AS a
LEFT JOIN #__virtuemart_medias AS b ON a.virtuemart_media_id = b.virtuemart_media_id
LEFT JOIN #__virtuemart_products_'.$this->product->_langTag.' AS c ON a.virtuemart_product_id = c.virtuemart_product_id
WHERE (a.virtuemart_product_id IN('.mysql_escape_string($ritems).'))';
$db->setQuery($query);
$recent = $db->loadObjectList();
$recent_no_double = array();
foreach ($recent as &$item) {
if (isset($recent_no_double[$item->virtuemart_product_id])) {
continue;
} elseif ($item->virtuemart_product_id = $product->virtuemart_product_id) {
continue;
} else {
$recent_no_double[$item->virtuemart_product_id] = $item;
}
}
$recent = $recent_no_double;
?>
<?php if(!empty($recent)): ?>
<h3>Недавно просмотренные товары</h3>
<ul>
<?php foreach($recent AS $key=>$item): ?>
<li><a title="<?=$item->title?>" href="/<?=JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id='.$item->virtuemart_product_id.'&virtuemart_category_id=0')?>"><img src="/<?=$item->file_url_thumb?>" alt="<?=$item->title?>"></a></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>

Либо вот еще
 
Назад
Сверху