Перейти к содержимому


Блок "Самые просматриваемые товары"


  • Вы не можете ответить в тему
Сообщений в теме: 14

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 06 August 2012 - 06:35 PM

Это блок. Т.е. надо сохранить в файл, обозвать как-нибудь типа best_view.tpl.html и скопировать в /core/tpl/user/[шаблон]/blocks, затем подключить в админке в разделе "Управление блоками" как "Подключить блок из файла".

Блок показывает наиболее просматриваемые товары (поле "количество просмотров" в списке товаров в админке).
Вне категорий - для всех категорий. Внутри какой-либо категории - для этой категории и дочерних.

{php}
function BestViewRecursiveCat($catID,$arrayID=array()) {
$data = db_query("SELECT categoryID FROM ".CATEGORIES_TABLE." WHERE parent=".$catID);
while ($row = db_fetch_assoc($data)) $arrayID = BestViewRecursiveCat($row['categoryID'],$arrayID);
$arrayID[]=$catID;
return $arrayID; }
$categoryID = $this->get_template_vars('categoryID');
$addon = isset($categoryID)?"AND categoryID IN (".implode(",",BestViewRecursiveCat($categoryID)).")":"";
$data = mysql_query("
SELECT name, productID, viewed_times
FROM ".PRODUCTS_TABLE."
WHERE enabled=1 AND categoryID>1 $addon
ORDER BY viewed_times DESC LIMIT 5");
while ($row = mysql_fetch_assoc($data)) $r[] = $row;
$this->assign("best_view", $r);
{/php}

<table width="100%">
<tbody><tr><td>
{section name=i loop=$best_view}
<div align="left"><a href="product_{$best_view[i].productID}.html">{$best_view[i].name}</a>
<div align="right"><b>{$best_view[i].viewed_times}</b></div>
<hr>
</div>
{sectionelse}
<div align="center">Нет товаров в этой категории</div>
{/section}
</td></tr></tbody>
</table>




Посмотреть, как выглядит можно, как всегда, на http://cpu.badisoft.ru
Смотреть, собственно, особо не на что, т.к. это "рыба" ((пример) для создания своего блока желаемого вида и развесистости.
  • 3
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#2 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 06 August 2012 - 11:24 PM

То же самое, но для расположения по центру. Выглядит так же, как краткие описания в категориях. Сделано под дефолтовый шаблон.

{php}
function BestViewCenterRecursiveCat($catID,$arrayID=array()) {
$data = db_query("SELECT categoryID FROM ".CATEGORIES_TABLE." WHERE parent=".$catID);
while ($row = db_fetch_assoc($data)) $arrayID = BestViewCenterRecursiveCat($row['categoryID'],$arrayID);
$arrayID[]=$catID;
return $arrayID; }
$categoryID = $this->get_template_vars('categoryID');
$addon = isset($categoryID)?"AND p.categoryID IN (".implode(",",BestViewCenterRecursiveCat($categoryID)).")":"";
$data = db_query("
SELECT p.name, p.productID, p.Price, p.in_stock, p.viewed_times, p.brief_description, pp.filename AS picture
FROM ".PRODUCTS_TABLE." AS p
LEFT JOIN ".PRODUCT_PICTURES." AS pp ON p.default_picture=pp.photoID
WHERE p.enabled=1 AND p.categoryID>1 $addon
ORDER BY p.viewed_times DESC
LIMIT 4");
while ($row = db_fetch_assoc($data)) {
$row["PriceWithUnit"] = show_price($row["Price"]);
$r[] = $row;}
$this->assign("best_view_to_show", $r);
{/php}

<table cellspacing="0" cellpadding="0" width="100%">
{section name=u loop=$best_view_to_show}
{if $smarty.section.u.index is div by $smarty.const.CONF_COLUMNS_PER_PAGE}<tr>{assign var="helpcounter" value=0}{/if}
{assign var="helpcounter" value=$helpcounter+1}
<td width="{math equation="100 / x" x=$smarty.const.CONF_COLUMNS_PER_PAGE format="%d"}%" align="left" valign="top">
{include file="product_brief.tpl.html" product_info=$best_view_to_show[u]}
</td>
{if ($smarty.section.u.index+1) is div by $smarty.const.CONF_COLUMNS_PER_PAGE || $smarty.section.u.last}
</tr>
<tr>
{section name=e loop=$smarty.const.CONF_COLUMNS_PER_PAGE max=$helpcounter}
{assign var="idnrecat" value=$smarty.section.u.index-$helpcounter+$smarty.section.e.index+1}
<td align="left">
<table cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="hdbot">
<a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}product_{$best_view_to_show[$idnrecat].productID}.html{else}index.php?productID={$best_view_to_show[$idnrecat].productID}{/if}">{$smarty.const.STRING_MOREPR}</a>
<a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}product_{$best_view_to_show[$idnrecat].productID}.html{else}index.php?productID={$best_view_to_show[$idnrecat].productID}{/if}" title='Количество посещений' style='float: right;'>{$best_view_to_show[$idnrecat].viewed_times}</a>
</td>
</tr>
</table>
</td>
{if $smarty.section.e.index+1 ne $smarty.const.CONF_COLUMNS_PER_PAGE}<td><img src="data/{$smarty.const.TPL}/pixel.gif" class="delim" alt=""></td>{/if}
{/section}
</tr>
{else}
<td class="delim"><img src="data/{$smarty.const.TPL}/pixel.gif" class="delim" alt=""></td>
{/if}
{sectionelse}
<div align="center">В этой категории нет ни одного товара</div>
{/section}
</table>

Как выглядит смотреть в подписи - "Самые посещаемые товары"
  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 markiz

    Пользователь

  • Пользователи
  • PipPip
  • 17 сообщений
Репутация: 0
Начинающий

Отправлено 02 September 2012 - 09:57 PM

Самые посещаемые товары: За модуль Спасибо. Но вот вопрос? Самые посещаемые товары модуль best_view_center.tpl.html почему то в нем пишет (На складе: нет товара) типа так - (2 350.00 руб. На складе: нет) хотя товар есть. как исправить. тогда по проще, как его вообще убрать (что нужно удалить) чтоб он не высвечивал соответствующего количеству товара на складе. по идеи он особо и не нужен.
  • 0

#4 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 03 September 2012 - 01:27 PM

почему то в нем пишет (На складе: нет товара) типа так - (2 350.00 руб. На складе: нет) хотя товар есть. как исправить.

Мой косяк, не использую "количество на складе", не заметил.
Надо заменить

SELECT p.name, p.productID, p.Price, p.brief_description, pp.filename AS picture

на

SELECT p.name, p.productID, p.Price, p.brief_description, pp.filename AS picture, p.in_stock


PS. В теме тоже исправил.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 03 September 2012 - 03:34 PM

update: добавил в подвале каждого товара (где кнопка "Подробнее") вывод числа просмотревших этот товар.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#6 Danger

    Пользователь

  • Пользователи
  • PipPip
  • 14 сообщений
Репутация: -3
Начинающий
  • ГородИзраиль г.Ашкелон

Отправлено 21 December 2012 - 11:34 AM

Всем привет я тестю этот магагин на денвере и не как не могу зделать чтобы все товары появлялис на главной ст кто можит подсказать как это зделать?
  • 0

#7 kasta69

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 102 сообщений
Репутация: 7
Начинающий
  • ГородНижний Тагил

Отправлено 16 January 2013 - 09:10 PM

Переделал данный блок маленько,
{php}
function BestViewCenterRecursiveCat($catID,$arrayID=array()) {
    $data = db_query("SELECT categoryID FROM ".CATEGORIES_TABLE." WHERE parent=".$catID);
    while ($row = db_fetch_assoc($data)) $arrayID = BestViewCenterRecursiveCat($row['categoryID'],$arrayID);
    $arrayID[]=$catID;
    return $arrayID; }
$categoryID = $this->get_template_vars('categoryID');
$addon = isset($categoryID)?"AND p.categoryID IN (".implode(",",BestViewCenterRecursiveCat($categoryID)).")":"";
$data = db_query("
SELECT p.name, p.productID, p.Price, p.in_stock, p.viewed_times, p.brief_description, pp.filename AS picture
FROM ".PRODUCTS_TABLE." AS p
LEFT JOIN ".PRODUCT_PICTURES." AS pp ON p.default_picture=pp.photoID
WHERE p.enabled=1 AND p.categoryID>1 $addon
ORDER BY p.viewed_times DESC
LIMIT 4");
while ($row = db_fetch_assoc($data)) {
    $row["PriceWithUnit"] = show_price($row["Price"]);
    $r[] = $row;}
$this->assign("best_view_to_show", $r);
{/php}
<table cellspacing="0" cellpadding="0" width="100%">
  {section name=u loop=$best_view_to_show}
  {if $smarty.section.u.index is div by $smarty.const.CONF_COLUMNS_PER_PAGE}<tr>{assign var="helpcounter" value=0}{/if}
  {assign var="helpcounter" value=$helpcounter+1}
  <td width="{math equation="100 / x" x=4 format="%d"}%" align="left" valign="top" style="padding: 8px;
border: 1px solid #000; -webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px; background: #fff;">
  {include file="product_brief2.tpl.html" product_info=$best_view_to_show[u]}
  </td>
    {if ($smarty.section.u.index+1) is div by $smarty.const.CONF_COLUMNS_PER_PAGE || $smarty.section.u.last}
    </tr>
    <tr>
    {section name=e loop=$smarty.const.CONF_COLUMNS_PER_PAGE max=$helpcounter}
    {assign var="idnrecat" value=$smarty.section.u.index-$helpcounter+$smarty.section.e.index+1}
    <td align="left">
  
    </td>
    {if $smarty.section.e.index+1 ne $smarty.const.CONF_COLUMNS_PER_PAGE}<td><img src="data/{$smarty.const.TPL}/pixel.gif" class="delim" alt=""></td>{/if}
    {/section}
    </tr>
    {else}
    <td class="delim"><img src="data/{$smarty.const.TPL}/pixel.gif" class="delim" alt=""></td>
    {/if}
  {sectionelse}
    <div align="center">В этой категории нет ни одного товара</div>
  {/section}
</table>
Отображение получилось как у блока популярные или новые товары, без кнопок подробнее и в корзину, убрал количество просмотров товара.
Обратите внимание на строку 28
{include file="product_brief2.tpl.html" product_info=$best_view_to_show[u]}
Создал новый файл короткого описания товара вот код:
{* шаблон короткого описния товара *}
{if $product_info ne NULL}
<table cellspacing="0" cellpadding="0" width="100%" >
<tr>
<td class="block_bg">
  <table cellspacing="0" cellpadding="0" width="100%" >
   <tr>
    <td class="hdbtop" valign="top" align="left">
	 <table cellspacing="0" cellpadding="0" width="100%">
	  <tr> {if $smarty.const.CONF_DISPLAY_FOTO eq 1}
	   {if $product_info.picture}
	   {else}
	   {if $smarty.const.CONF_DISPLAY_NOPHOTO eq 1}
	   <td class="imboxl"><a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}product_{$product_info.productID}.html{else}index.php?productID={$product_info.productID}{/if}"><img src="data/empty.gif" alt="no photo"></a></td>
	   {/if}
	   {/if}
	   {/if}
	   {* фотография товара *}
	  <tr>
	  {if $smarty.const.CONF_DISPLAY_FOTO eq 0}
	  {if $product_info.picture}
	  <td class="imboxr"><a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}product_{$product_info.productID}.html{else}index.php?productID={$product_info.productID}{/if}"><img src="data/small/{$product_info.picture}" alt="{$product_info.name}"></a></td>
	  {else}
	  {if $smarty.const.CONF_DISPLAY_NOPHOTO eq 1}
	  <td class="imboxr"><a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}product_{$product_info.productID}.html{else}index.php?productID={$product_info.productID}{/if}"><img src="data/empty.gif" alt="no photo"></a></td>
	  {/if}
	  {/if}
	  {/if}
	  </tr>
    {* короткое описание товара *}
	  </tr>
   <tr class="hdbtop" align="center" valign="middle">
		 <td class="price" id="optionPrice_{$product_info.productID}">{if $currencies_count ne 0}{if $product_info.Price <= 0}{$smarty.const.STRING_NOPRODUCT_IN}{else}{$product_info.PriceWithUnit}{/if}{/if}</td>
			    {if $currencies_count ne 0}{if $product_info.list_price > 0 && $product_info.list_price > $product_info.Price && $product_info.Price > 0}
			    {/if}{/if}
		    </tr>
   <tr>
	 <td>
	 {if $smarty.const.CONF_MOD_REWRITE eq 1}
{assign var="tlink" value="<a href='product_`$product_info.productID`.html'>`$product_info.name`</a>"}
{else}
{assign var="tlink" value="<a href='index.php?productID=`$product_info.productID`'>`$product_info.name`</a>"}
{/if}
{assign var="preheader" value="<a href='`$smarty.const.ADMIN_FILE`?productID=`$product_info.productID`&amp;eaction=prod' title='`$smarty.const.STRING_EDITPR`' style='float: right;'>+</a>"}
{if $isadmin eq "yes"}{assign var="postheader" value=`$preheader``$tlink`}{else}{assign var="postheader" value=$tlink}{/if}
{include file="header.tpl.html" header=$postheader}
	 </td>
   </tr>
    </table>
   </td>
  </tr>
</table>
</td></tr></table>
{/if}
Смотреть что получилось можно здесь http://kupinstrument.ru

Извините забыл сказать, блок называется последние купленные товары!!!
  • 0

#8 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 17 January 2013 - 07:31 AM

блок называется последние купленные товары!!!

PHP-часть блока не изменена ни на байт, т.е. как показывались четыре товара с наибольшим количеством просмотров, так и показываются.
Причем тут "последние купленные товары"?
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#9 kasta69

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 102 сообщений
Репутация: 7
Начинающий
  • ГородНижний Тагил

Отправлено 17 January 2013 - 09:35 AM

А есть ли такая возможность создать блок с последними купленными товарами? Как нужно изменить код php для вывода этих товаров??
  • 0

#10 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 17 January 2013 - 12:16 PM

А есть ли такая возможность создать блок с последними купленными товарами?

Раз есть информация о покупке товаров, значит и получить ее как-то можно, нет? :)

Как нужно изменить код php для вывода этих товаров??

Где-то рядом есть другой блок - "самые продаваемые товары". Вроде, так называется.
В нем выводятся не последние купленные, а те, которые за заданное количество дней покупались наибольшее количество раз. Но таблицы в селекте там именно те, которые нужны, только условие чуть поправить.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#11 kasta69

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 102 сообщений
Репутация: 7
Начинающий
  • ГородНижний Тагил

Отправлено 17 January 2013 - 04:01 PM

Спасибо за помощь! Но с php и mysql я еще не дружу :). Прочитал данную тему. Вообще мне нужен блок последние покупки может быть mx009 его закончит и выложит для остальных, был бы очень рад. А писать в ту тему не вижу смысла, раз я там еще ничего не понимаю.
  • 0

#12 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 17 January 2013 - 07:04 PM

"Делаю коммерческий сайт, но в том, что делаю не разбираюсь, поэтому буду ждать, пока сделают за меня и бесплатно, а я возьму и скопирую". Странный подход. Вы этот сайт бесплатно рисуете, чтоли? :)
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#13 kasta69

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 102 сообщений
Репутация: 7
Начинающий
  • ГородНижний Тагил

Отправлено 18 January 2013 - 08:52 AM

Да хорошее сообщение!!! :) Аж задело за живое. Нет за 5500 руб. Спасибо за такое сообщение, с этого часа начну разбираться в php и mysql. Когда то также меня зацепили за знания html и сss, мне нужен был плавающий блок. Разобрался в итоге сам!!!
Базы данных и php для меня темный лес, может подскажете с чего начать, раз Вы профессионал. Буду очень Вам признателен.
  • 0

#14 Lada

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 107 сообщений
Репутация: 7
Начинающий
  • ГородЧита

Отправлено 11 July 2013 - 10:24 PM

Такой вопрос (не нашел на форуме) а можно ли сделать количество просмотров товара на странице полного описания товара?
  • 1

#15 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 12 July 2013 - 08:39 AM

Такой вопрос (не нашел на форуме) а можно ли сделать количество просмотров товара на странице полного описания товара?

Можно.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)