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


Новинки(статика) несколько страниц


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

#1 z056

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

  • Download User
  • PipPip
  • 16 сообщений
Репутация: 0
Начинающий

Отправлено 19 August 2012 - 12:51 AM

Доброго времени суток! Столкнулся с проблемой - нужно ввести на главной блок новинки (статика) по 5 товаров но на 2-3 страницы. И не понимаю куда копать)
  • 0

#2 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 19 August 2012 - 07:37 AM

Выводить все 15 товаров сразу, но разбить на дивы по 5, а переключение страниц сделать на JQuery (собственно те же табы)
  • 0

#3 z056

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

  • Download User
  • PipPip
  • 16 сообщений
Репутация: 0
Начинающий

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

Спасибо за направление :) ...вот взял я к примеру простой код для табов
<div class="section">
  <ul class="tabs">
	<li class="current">1-я вкладка</li>
	<li>2-я вкладка</li>
  </ul>
  <div class="box visible">
	Содержимое первого блока
  </div>
  <div class="box">
	Содержимое второго блока
  </div>
</div>
Только вот как его применить для шаблона новых товаров, ведь он выводит все 15 товаров, я так понимаю
{* шаблон статического блока новых товаров *}
{if $new_products}
<table cellspacing="0" cellpadding="0" width="100%" >
  {section name=i loop=$new_products}
  {if $smarty.section.i.index is div by 3}<tr class="tr">{/if}
	<td width="{math equation="100 / x" x=4 format="%d"}%" align="center" valign="top" style="padding-top: 18px; padding-bottom: 18px;">
	<a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}product_{$new_products[i].productID}.html{else}index.php?productID={$new_products[i].productID}{/if}"><img src="data/{$new_products[i].filename}" alt="{$new_products[i].name}"></a>
	<div class="fil"></div>
	<b class="price">{if $new_products[i].cena <= 0}{$smarty.const.STRING_NOPRODUCT_IN}{else}{$new_products[i].Price}{/if}</b>
	<div class="fil"></div>
	<a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}product_{$new_products[i].productID}.html{else}index.php?productID={$new_products[i].productID}{/if}">{$new_products[i].name}</a>
	</td>
	{if ($smarty.section.i.index+1) is div by 3}</tr>{else}
	<td><img src="data/{$smarty.const.TPL}/pixel.gif" class="delim" alt=""></td>
	{/if}
  {/section}
</table>
{else}
<div align="center">{$smarty.const.STRING_EMPTY_CATEGORY}</div>
{/if}
Где и как указать что в первом диве 5 товаров потом во втором диве 5 товаров и тд?
  • 0

#4 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 19 August 2012 - 04:05 PM

Спасибо за направление ...вот взял я к примеру простой код для табов

Если знаете хоть немного smarty то должно быть достаточно еще одной подсказки :)

Один из вариантов заводите счетчик в smarty и считайте дивы.

Другой вариант используйте не табы, а какой-то барабан(карусель) с прокруткой по 5шт. Их полно в интернете и страницы там есть :)
  • 0

#5 badisoft

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

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

Отправлено 19 August 2012 - 07:49 PM

Где и как указать что в первом диве 5 товаров потом во втором диве 5 товаров и тд?

Штатно там используется смарти-цикл {section name=i loop=$new_products} без не обязательных параметров, т.е. по всему массиву данных (по всем новинкам). Можно продублировать в содержимом блока этот цикл (в каждом блоке один и тот же, хотя это и вопиюще некрасиво), но в section добавить не обязательные параметры start и max, см. http://www.smarty.ne...on.section.tpl.

Это УЖЕ должно сработать. Ну а дальше - если есть желание - доводить до нормального безизбыточного вида. Например, заключив эти "пять по три" в отдельный наружный цикл, чтобы не было пяти практических одинаковых наборов кода. При этом надо понимать, что это в шаблоне избыточности не будет, т.е. править легче, а в конечном HTML все равно цикл развернет их в пять почти одинаковых блоков.

Можно и без jquery, приделав навигатор в стиле штатного навигатора категории или (что удобнее к пониманию) в стиле имеющихся на форуме переделок разных модулей (новости, обсуждения) под навигатор. Тогда каждая страница будет меньшего объема (что нынче не особенно и важно), но подгружаться заново (что нынче довольно быстро). Но с Jquery, несомненно, будет выглядеть красивее.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#6 z056

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

  • Download User
  • PipPip
  • 16 сообщений
Репутация: 0
Начинающий

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

Допустим берем jcarouselLite, там можно указать прокручивать по 5 товаров. Вроде подходит
НО!
Теперь стоит вопрос, как обернуть шаблон вывода в код?
<div class="gallery">
	 <ul>
		 <li></li>
		 <li></li>
		 <li></li>
		 <li></li>
	 </ul>			   
</div>

  • 0

#7 badisoft

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

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

Отправлено 20 August 2012 - 08:22 PM

Я сделал нечто подобное для "самых посещаемых товаров", см. подпись. Именно как и описывал, идея та же. Вне категории табами выводятся самые посещаемые в категориях первого уровня (для каждой категории свой таб). В категории первого уровня - самые посещаемые в дочерних категориях и так далее. Надо еще долизать, но суть уже понятна.

PS. Кстати, я был удивлен тем (и довольно долгое время "удивлен"), что конструкция
{section name=i...}..{/section}{section name=i...}..{/section} не работает, а
{section name=i...}..{/section}{section name=k...}..{/section} работает, хотя
для переменной i область действия совершенно четко закрывается оператором {/section} и следующий section никак с предыдущим не связан. Однако факт. Фигня выходит. От безысходности заменил одноименные индексы в section - опа-на! Заработало!
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#8 z056

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

  • Download User
  • PipPip
  • 16 сообщений
Репутация: 0
Начинающий

Отправлено 21 August 2012 - 09:09 AM

Хороший блок, спасибо. Только чем он мне помог? Ну выводит он посещаемые, а в описании к модулю не написано как сделать табы категориям :) . Если я б знал как это делать, я не писал бы на форуме. Выучить и понять smarty, чтоб не задавать вопросы, тоже не в силах за 2 дня.
  • 0

#9 badisoft

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

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

Отправлено 21 August 2012 - 09:52 AM

Хороший блок, спасибо. Только чем он мне помог? Ну выводит он посещаемые, а в описании к модулю не написано как сделать табы категориям

Мне не жалко выложить, просто там надо бы еще доделать. Вот в том виде, как есть. И это не решение Вашего вопроса, а лишь пример, как его решить.

Прикрепленные файлы


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

#10 badisoft

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

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

Отправлено 21 August 2012 - 10:15 AM

Вечно с новыми юзерами какие-то проблемы. То им файл не скачать, то им смарти за два дня не выучить....

{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');
if(!isset($categoryID)) $categoryID = 1;
$data = db_query("SELECT categoryID,name FROM ".CATEGORIES_TABLE." WHERE parent=".$categoryID);
while ($row = db_fetch_assoc($data)) $arrayCat[] = $row;
if(!isset($arrayCat))
{
$data = db_query("SELECT categoryID, name FROM ".CATEGORIES_TABLE." WHERE categoryID=".$categoryID." LIMIT 1");
$arrayCat = db_fetch_assoc($data);
}
$a = array();
foreach ($arrayCat as $cat)
{
$data = db_query("
SELECT p.name, p.productID, p.Price, 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 IN (".implode(',',BestViewCenterRecursiveCat($cat['categoryID'])).")
ORDER BY p.viewed_times DESC
LIMIT 4");
$r = array();
while ($row = db_fetch_assoc($data))
{
$row["PriceWithUnit"] = show_price($row["Price"]);
$r[] = $row;
}
$a[] = $r;
}
$this->assign("cat_jq", $arrayCat);
$this->assign("best_view_to_show_jq", $a);
{/php}

<script type="text/javascript">
{literal}
$(function() {
$( "#cats" ).tabs({selected:0});
});
{/literal}
</script>

<div style="border:0!important" id="cats">
<ul>
{section name=i loop=$cat_jq}
<li><a href="#cat{$smarty.section.i.index}">{$cat_jq[i].name}</a></li>
{/section}
</ul>
{section name=j loop=$best_view_to_show_jq}
<div id="cat{$smarty.section.j.index}">

<table cellspacing="0" cellpadding="0" width="100%">
{section name=u loop=$best_view_to_show_jq[j]}
{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_jq[j][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_jq[j][$idnrecat].productID}.html{else}index.php?productID={$best_view_to_show_jq[j][$idnrecat].productID}{/if}">{$smarty.const.STRING_MOREPR}</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>

</div>
{/section}
</div>


<table>...</table> - чуть измененный штатный кусок краткого описания товара из product_brief.tpl.html
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)