Готовы два решения «Бренды» и «Фильтры»
Сначала о первом. Может это решение не самое лучшее и не универсальное, но сделать это можно стандартными средствами скрипта Webasyst Shop-Script
1. Создаем категория товаров Бренды (производители, поставщики и т.д.) и запоминаем ее ID
Каждый бренд – это подкатегория категории Бренды.
При создании Бренда (как и в любой категории) можно загрузить логотип, написать описание.
Теперь при создании товара в обычной категории на вкладке «Дополнительно» в строке «Дополнительные родительские категории» нажимаем «Добавить» и выбираем категорию нужного нам Бренда.
2. Скрываем категорию Бренды в дереве каталога и на главной странице:
в файле /published/SC/html/scripts/templates/frontend/category_tree.html
код
{section name=i loop=$categories_tree} {if $categories_tree[i].categoryID != 1}
меняем на
{section name=i loop=$categories_tree} {if $categories_tree[i].categoryID != 1 && $categories_tree[i].categoryID != 558}
где 558 – ID категории Бренды
в файле /published/SC/html/scripts/templates/frontend/root_categories.html
код
{foreach from=$root_categories item=_cat name=_fr}
меняем на
{foreach from=$root_categories item=_cat name=_fr}{if $_cat.categoryID!=558}
где 558 – ID категории Бренды
в этом же файле внизу перед последним {/foreach}
добавляем {/if}
то есть получится
{/if}{/foreach}
Для удобства поиска можно дублировать имя бренда в поле Тэг. И тогда можно в сайдбаре вывести «фильтр» по брендам в этой категории.
Плагин собирает теги(в нашем случае бренды) всех товаров этой категории и выводит их в виде списка ссылок. При нажатии на ссылку, пользователь видит все товары с этим тэгом.
Листинг плагина function.brands.php
<?php function smarty_function_brands( $params, &$smarty ) { $disp=''; if($params['type']=='menu'){ if($_GET['categoryID'] && $_GET['categoryID']!=1){ $where=' WHERE categoryID='.$_GET['categoryID']; } else { $where=''; } $sql='SELECT tag_id FROM SC_tagged_objects WHERE object_type="product" AND language_id=1 AND object_id IN (SELECT productID FROM SC_products '.$where.' )'; //echo $sql; if($r=mysql_query($sql)){ $sql2='SELECT DISTINCT(name) FROM SC_tags WHERE id IN('; $i=0; while($res=mysql_fetch_assoc($r)){ if($i!=0) $sql2.=','; $sql2.=$res['tag_id']; $i++; } $sql2.=')'; //echo $sql2; if($r2=mysql_query($sql2)){ $disp.='<div class="side_box"> <h2>Бренды</h2> <ul class="smenu">'; while($res2=mysql_fetch_assoc($r2)){ $disp.='<li><a href="/search/?searchstring='.$res2['name'].'">'.$res2['name'].'</a></li>'; } $disp.='</ul></div>'; } } } return $disp; } ?>
Вызывать его нужно так {brands type=’menu’}
Еще один способ: вместо тегов сделать доп. характеристику и фильтр. Тогда будет фильтровать по бренду внутри категории.
Про фильтры напишу через пару дней. Тоже буде готовое решение.





Здравствуйте, все сделал, как описано выше, но категория Бренды все равно не отображается…
Помогите пожалуйста
Где именно не показываются?
В категории у вас должен быть вывод тегов.
А ссылку на сами бренды вам все равно придется делать еще одним плагином, но запросы там не сложные
а где сохранить этот function.brands.php ?
тут – published\SC\html\scripts\core_functions\ ?
/kernel/includes/smarty/plugins
Привет, а решение по фильтрам ты не публиковал ещё ?
еще нет. постараюсь в течении недели. там просто решение
{brands type=’menu’} где это прописывать?
Туда, где вы хотите отобразить список брендов