Новинки(статика) несколько страниц
#1
Отправлено 19 August 2012 - 12:51 AM
#2
Отправлено 19 August 2012 - 07:37 AM
#3
Отправлено 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 товаров и тд?
#4
Отправлено 19 August 2012 - 04:05 PM
Если знаете хоть немного smarty то должно быть достаточно еще одной подсказкиСпасибо за направление ...вот взял я к примеру простой код для табов
Один из вариантов заводите счетчик в smarty и считайте дивы.
Другой вариант используйте не табы, а какой-то барабан(карусель) с прокруткой по 5шт. Их полно в интернете и страницы там есть
#5
Отправлено 19 August 2012 - 07:49 PM
Штатно там используется смарти-цикл {section name=i loop=$new_products} без не обязательных параметров, т.е. по всему массиву данных (по всем новинкам). Можно продублировать в содержимом блока этот цикл (в каждом блоке один и тот же, хотя это и вопиюще некрасиво), но в section добавить не обязательные параметры start и max, см. http://www.smarty.ne...on.section.tpl.Где и как указать что в первом диве 5 товаров потом во втором диве 5 товаров и тд?
Это УЖЕ должно сработать. Ну а дальше - если есть желание - доводить до нормального безизбыточного вида. Например, заключив эти "пять по три" в отдельный наружный цикл, чтобы не было пяти практических одинаковых наборов кода. При этом надо понимать, что это в шаблоне избыточности не будет, т.е. править легче, а в конечном HTML все равно цикл развернет их в пять почти одинаковых блоков.
Можно и без jquery, приделав навигатор в стиле штатного навигатора категории или (что удобнее к пониманию) в стиле имеющихся на форуме переделок разных модулей (новости, обсуждения) под навигатор. Тогда каждая страница будет меньшего объема (что нынче не особенно и важно), но подгружаться заново (что нынче довольно быстро). Но с Jquery, несомненно, будет выглядеть красивее.
#6
Отправлено 19 August 2012 - 11:39 PM
НО!
Теперь стоит вопрос, как обернуть шаблон вывода в код?
<div class="gallery"> <ul> <li></li> <li></li> <li></li> <li></li> </ul> </div>
#7
Отправлено 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 - опа-на! Заработало!
#8
Отправлено 21 August 2012 - 09:09 AM
#9
Отправлено 21 August 2012 - 09:52 AM
Мне не жалко выложить, просто там надо бы еще доделать. Вот в том виде, как есть. И это не решение Вашего вопроса, а лишь пример, как его решить.Хороший блок, спасибо. Только чем он мне помог? Ну выводит он посещаемые, а в описании к модулю не написано как сделать табы категориям
Прикрепленные файлы
#10
Отправлено 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