это как? Вот тут раскрывающий список фильтров http://forum.opencart-russia.ru/threads/filtry-raskryvajuschijsja-spisok.486/
Понял. Фильтр, элементом список нужен. В файле шаблона \catalog\view\theme\default\template\module\filter.tpl Заменим это Код: <div id="filter-group<?php echo $filter_group['filter_group_id']; ?>"> <?php foreach ($filter_group['filter'] as $filter) { ?> <?php if (in_array($filter['filter_id'], $filter_category)) { ?> <label class="checkbox"> <input name="filter[]" type="checkbox" value="<?php echo $filter['filter_id']; ?>" checked="checked" /> <?php echo $filter['name']; ?></label> <?php } else { ?> <label class="checkbox"> <input name="filter[]" type="checkbox" value="<?php echo $filter['filter_id']; ?>" /> <?php echo $filter['name']; ?></label> <?php } ?> <?php } ?> </div> на это Код: <div id="filter-group<?php echo $filter_group['filter_group_id']; ?>"> <select class="form-control" name="filter[]"> <option selected="selected" value=""> --- Выберите --- </option> <?php foreach ($filter_group['filter'] as $filter) { ?> <?php if (in_array($filter['filter_id'], $filter_category)) { ?> <option selected="selected" value="<?php echo $filter['filter_id']; ?>"><?php echo $filter['name']; ?></option> <?php } else { ?> <option value="<?php echo $filter['filter_id']; ?>"><?php echo $filter['name']; ?></option> <?php } ?> <?php } ?> </select> </div> А вот это Код: $('input[name^=\'filter\']:checked').each(function(element) { filter.push(this.value); }); на это Код: $('select[name^=\'filter\'] option:selected').each(function(element) { if (this.value != "") { filter.push(this.value); } });
@Ален , у меня шаблон фильтров измененный (возможно, из-за версии) и данное решение вызывает ошибку. Не могли бы Вы посмотреть, как мне заменить чекбоксы на выпадающий список? PHP: <div class="panel panel-default"> <div class="panel-heading"><?php echo $heading_title; ?></div> <div class="list-group"> <?php foreach ($filter_groups as $filter_group) { ?> <a class="list-group-item"><?php echo $filter_group['name']; ?></a> <div class="list-group-item"> <div id="filter-group<?php echo $filter_group['filter_group_id']; ?>"> <?php foreach ($filter_group['filter'] as $filter) { ?> <div class="checkbox"> <label> <?php if (in_array($filter['filter_id'], $filter_category)) { ?> <input type="checkbox" name="filter[]" value="<?php echo $filter['filter_id']; ?>" checked="checked" /> <?php echo $filter['name']; ?> <?php } else { ?> <input type="checkbox" name="filter[]" value="<?php echo $filter['filter_id']; ?>" /> <?php echo $filter['name']; ?> <?php } ?> </label> </div> <?php } ?> </div> </div> <?php } ?> </div> <div class="panel-footer text-right"> <button type="button" id="button-filter" class="btn btn-primary"><?php echo $button_filter; ?></button> </div></div><script type="text/javascript"><!--$('#button-filter').on('click', function() { filter = []; $('input[name^=\'filter\']:checked').each(function(element) { filter.push(this.value); }); location = '<?php echo $action; ?>&filter=' + filter.join(',');});//--></script>
Был белый лист, я решила, что это ошибка в PHP, но сейчас попробовала еще раз внимательно изменить, сохранив правильную вложенность и все работает.
Alen, Вид изменился но поиск не работает. Фильтр нестандартный, без кнопки. Можете глянуть как скрипт подправить? Код: <div class="box bt-filter not-animated" data-animate="fadeInLeft" data-delay="200"> <div class="box-heading"><h3><?php echo $heading_title; ?></h3></div> <div class="box-content"><div class="list"> <?php foreach ($filter_groups as $filter_group) { ?> <a class="title"><?php echo $filter_group['name']; ?></a> <?php if($filter_group['show_image']=='image'){ ?> <div class="bt-filter-image"> <div id="filter-group<?php echo $filter_group['filter_group_id']; ?>"> <ul> <?php foreach ($filter_group['filter'] as $filter) { ?> <noindex><li <?php echo(in_array($filter['filter_id'], $filter_category))?'class="active"':''; ?>><a rel="nofollow" title="<?php echo $filter['name']; ?>" href="<?php echo $filter['filter_id']; ?>" ><img alt="<?php echo $filter['name']; ?>" src="<?php echo $filter['image']; ?>" /></a></li></noindex> <?php } ?> </ul> </div> </div> <?php }else{ ?> <div class=""> <div id="filter-group<?php echo $filter_group['filter_group_id']; ?>"> <ul> <?php foreach ($filter_group['filter'] as $filter) { ?> <noindex><li <?php echo(in_array($filter['filter_id'], $filter_category))?'class="active"':''; ?>><a rel="nofollow" title="<?php echo $filter['name']; ?>" href="<?php echo $filter['filter_id']; ?>"><span class="fe-checkbox"></span> <?php echo $filter['name']; ?></a></li></noindex> <?php } ?> </ul> </div> </div> <?php } ?> <?php } ?> </div></div> </div> <?php global $request;?> <script type="text/javascript"><!-- var filter = []; <?php if (isset($request->get['filter'])){ ?> <?php $filters = explode(',', (string)$request->get['filter']); ?> <?php foreach($filters as $filter){ ?> filter.push(<?php echo $filter; ?>); <?php } ?> <?php } ?> var idarr = ''; <?php foreach ($filter_groups as $filter_group) { ?> <?php if($filter_group == end($filter_groups)){ ?> mark = ''; <?php }else{ ?> mark = ','; <?php } ?> idarr = idarr + '#filter-group<?php echo $filter_group['filter_group_id']; ?> ul li a'+ mark; <?php } ?> $(function () { $(idarr).click(function (event) { event.preventDefault(); $(this).parent('li').toggleClass('active'); var a = filter.indexOf(parseInt($(this).attr('href'))); if(a == -1){ filter.push(parseInt($(this).attr('href'))); }else{ filter.splice(a,1) } var url = '<?php echo $action; ?>&filter=' + filter.join(','); $.ajax({ type: 'GET', url: url, data: {}, beforeSend: function( xhr ) { $("#tags-load").show(); }, complete: function (data) { $('#content').html($("#content", data.responseText).html()); history.pushState({ page: url }, url, url); $("#tags-load").hide(); handleGridList(); } }); }); }); $(document).ready(function(){ $( document ).ajaxComplete(function() { //handleGridList(); }); }) function handleGridList(){ if (typeof boss_quick_shop == 'function') { boss_quick_shop(); } dataAnimate(); $('#list-view').click(function() { $('#content .product-layout > .clearfix').remove(); $('#content .product-layout').attr('class', 'product-layout product-list col-xs-12'); localStorage.setItem('display', 'list'); }); // Product Grid $('#grid-view').click(function() { $('#content .product-layout').attr('class', 'product-layout product-grid col-md-4 col-sm-4 col-xs-12'); localStorage.setItem('display', 'grid'); }); if (localStorage.getItem('display') == 'list') { $('#list-view').trigger('click'); } else { $('#grid-view').trigger('click'); } } //--></script>
тема!! Стандартный модуль фильтр Отсюда и вопрос, зачем вы пробуете то, что явно не подходит? Решение только для стандартного, и сама тема для вопросов по стандартному фильтру.
Извиняйте если не в тему. Подскажите как сделать автоматическое применение стандартного фильтра. Версия ocStore 2.1.0.2.1
Ален, подскажите пожалуйста, очень нужно перенести стандартный фильтр под описание категории. У меня он сейчас настроен и отображается вверху страницы нужной категории прямо над описанием и фотографиями подкатегорий. Хочу его опустить под описание категории и под сортировку, чтобы он был прямо перед товарами. Если сможете подсказать как сделать буду очень признателен, заранее спасибо!