Древовидная фильтрация в mFilter2
Привет!
Потребовалось оформить категории в mFilter2 вот таким образом:
Как это сделать? И можно ли это сделать с помощью стандартных фильтров типа parents, categories и grandparents?
зы Использую tickets и msearch2, магазинов никаких нет.
Потребовалось оформить категории в mFilter2 вот таким образом:
Как это сделать? И можно ли это сделать с помощью стандартных фильтров типа parents, categories и grandparents?
зы Использую tickets и msearch2, магазинов никаких нет.
Комментарии: 11
Или это как-то через чанки реализовать можно?
я советую тебе просто выводить варианты категорий (в виде ТВ) а заглавную категорию выводить вручную и по клику на нее отмечать все ее категории
А можно немного подробнее?
Какого типа нужно создать тв, и в каком чанке прописать название заглавной категории чтобы она именно перед своими дочерними категориями встала?
Какого типа нужно создать тв, и в каком чанке прописать название заглавной категории чтобы она именно перед своими дочерними категориями встала?
Может можно как-то обозначить для заглавных категорий один чанк, а для дочерних — другой?
ну, как я это вижу (совсем не канон, даже не факт что правильный подход ) сделать ТВ с типом список, например Недвижимость — а в нем квартиры/комнаты/ и тд, mFilter выведет эти категорийй с заголовком недвижимость, далее нужно найти чанк вывода этих чекбоксов и сделать из заголовка в которое выводится имя тв тоже чекбокс, далее на js отлавливать клик на чекбокс «Недвижимость» и просто прокликать все дочерние чекбоксы через цикл, как то так
Попробовал так сделать, результат кое-какой есть )
Сделал параметр realty (список), в нём возможные значения (Квартиры||Комнаты||Земельные участки и т.д.), на всякий случай разрешил его всем шаблонам.
Прошелся по категориям недвижимости и к каждому разделу назначил соответствующий пункт из realty.
Вызвал mFilter2 так:
В итоге выводит вот такой фильтр:
Но если выбирать пункты, то в результаты поиска выводятся только те страницы, которые отмечены tv realty. То есть, если я выбираю Гаражи и машиноместа, то выводится ссылка только на этот раздел, а дочерние игнорируются, хотя они там есть.
Параметры &hideContainers = `false` и &showHidden = `true` по умолчанию.
Есть подозрение, что я неправильно указываю filters при вызове. Есть какие-нибудь соображения? )
Сделал параметр realty (список), в нём возможные значения (Квартиры||Комнаты||Земельные участки и т.д.), на всякий случай разрешил его всем шаблонам.
Прошелся по категориям недвижимости и к каждому разделу назначил соответствующий пункт из realty.
Вызвал mFilter2 так:
[[!mFilter2?
&parents=`0`
&filters=`tv|realty`
]]
В итоге выводит вот такой фильтр:
Но если выбирать пункты, то в результаты поиска выводятся только те страницы, которые отмечены tv realty. То есть, если я выбираю Гаражи и машиноместа, то выводится ссылка только на этот раздел, а дочерние игнорируются, хотя они там есть.
Параметры &hideContainers = `false` и &showHidden = `true` по умолчанию.
Есть подозрение, что я неправильно указываю filters при вызове. Есть какие-нибудь соображения? )
я не понял в чем проблема, фильтры ты вывел, по идее должны работать, беда в чем?
Вот страница krskdoska.ru/
Если не вводить ничего в поисковую строку, и просто кликнуть на фильтр (скажем, Квартиры), то справа в результатах выводится только ссылка на раздел с квартирами. А нужно, чтобы выводились все тикеты из этого раздела.
Надеюсь, понятно выразился )
Если не вводить ничего в поисковую строку, и просто кликнуть на фильтр (скажем, Квартиры), то справа в результатах выводится только ссылка на раздел с квартирами. А нужно, чтобы выводились все тикеты из этого раздела.
Надеюсь, понятно выразился )
Нужно не категориям указывать тв, а самим объектам :)
www.dropbox.com/s/6wo33y1vpdpclwh/%D0%A1%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82%202015-04-27%2014.40.09.png?dl=0
www.dropbox.com/s/6wo33y1vpdpclwh/%D0%A1%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82%202015-04-27%2014.40.09.png?dl=0
Спасибо, переделал! Теперь выводит нормально результаты )
Спасибо большое за помощь!
Пошел дальше, сделал через js отслеживание чекбоксов, чтобы можно было выбирать разделы группами (http://krskdoska.ru).
Если нажать на чекбокс Недвижимость — то выбираются все подразделы, но фильтрация не происходит.
Я так понимаю, в скрипте нужно запустить фильтрацию, но что именно прописать?
Скрипт, отвечающий за выделение чекбоксов:
Сгенерированный код страницы, где выводятся чекбоксы:
Пошел дальше, сделал через js отслеживание чекбоксов, чтобы можно было выбирать разделы группами (http://krskdoska.ru).
Если нажать на чекбокс Недвижимость — то выбираются все подразделы, но фильтрация не происходит.
Я так понимаю, в скрипте нужно запустить фильтрацию, но что именно прописать?
Скрипт, отвечающий за выделение чекбоксов:
<script type="text/javascript">
//<![CDATA[
$(function(){
$('.main_check').on('change',function () {
var $that = $(this);
$that.next('ul').find(':checkbox').prop('checked', $that.prop('checked'));
});
$('.checkbox').on('change', function(){
var $that = $(this),
ul = $that.closest('ul'),
main = ul.prev('.main_check');
main.prop('checked', $(':checkbox',ul).length == $(':checkbox:checked',ul).length);
});
});//]]>
</script>
Сгенерированный код страницы, где выводятся чекбоксы:
<ul class="folder">
<li>Недвижимость<input type="checkbox" class="main_check">
<ul class="section">
<li>
<label for="mse2_tv|realty_0" class="">
<input type="checkbox" class="checkbox" name="tv|realty" id="mse2_tv|realty_0" value="Гаражи и машиноместа"> Гаражи и машиноместа <sup>1 </sup>
</label>
</li>
<li>
<label for="mse2_tv|realty_1" class="">
<input type="checkbox" class="checkbox" name="tv|realty" id="mse2_tv|realty_1" value="Дома и дачи"> Дома и дачи <sup>2 </sup>
</label>
</li>
<li>
<label for="mse2_tv|realty_2" class="">
<input type="checkbox" class="checkbox" name="tv|realty" id="mse2_tv|realty_2" value="Земельные участки"> Земельные участки <sup>1 </sup>
</label>
</li>
<li>
<label for="mse2_tv|realty_3" class="">
<input type="checkbox" class="checkbox" name="tv|realty" id="mse2_tv|realty_3" value="Квартиры"> Квартиры <sup>3 </sup>
</label>
</li>
<li>
<label for="mse2_tv|realty_4" class="">
<input type="checkbox" class="checkbox" name="tv|realty" id="mse2_tv|realty_4" value="Коммерческая недвижимость"> Коммерческая недвижимость <sup>1 </sup>
</label>
</li>
<li>
<label for="mse2_tv|realty_5" class="">
<input type="checkbox" class="checkbox" name="tv|realty" id="mse2_tv|realty_5" value="Комнаты"> Комнаты <sup>3 </sup>
</label>
</li>
</ul>
</li>
</ul>
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.