iborisbelov
@iborisbelov
Веб-дизайнер, UX\UI

Как заставить ISOTOPE работать с несколькими параметрами?

Доброй ночи.

Дано:
У меня есть посты которые фильтруются через ISOTOPE.
Сейчас получается так, что если мы выбираем NIKE - то фильтруются NIKE
А если выбираем NIKE + Баскетбол - то появляются посты с "NIKE" и отдельно с "Баскетбол".

Надо:
Мне надо чтобы при выборе NIKE+Баскетбол, были посты только по "Найк с баскетболом".

Нашел ссылку https://isotope.metafizzy.co/filtering.html#combin... по ней сделал фильтр, тут https://goo.gl/dDVa5G

То есть фильтр выглядит так

<ul id="filters" class="button-group male" data-filter-group="male" >
<? $args = array(  'post_type' => 'catalog',	'taxonomy' => 'male', );?>   
<?php $args_brands = array(	'orderby' => 'name',	'hide_empty' => 1,	'parent' => 0,);
$categories = get_terms('male', $args_brands ); if($categories){ foreach ($categories as $cat){ ?>
<li><label><input data-filter=".<?php echo $cat->slug; ?>" value=".<?php echo $cat->slug; ?>" type="checkbox"><span><?php echo $cat->name; ?></span></label></li><? } } ?>
</ul>

<ul id="filters" class="button-group types" data-filter-group="types" >
<? $args = array(  'post_type' => 'catalog',	'taxonomy' => 'sport_tag', );?>   
<?php $args_brands = array(	'orderby' => 'name',	'hide_empty' => 1,	'parent' => 0,);
$categories = get_terms('sport_tag', $args_brands ); if($categories){ foreach ($categories as $cat){ ?>
<li><label><input data-filter=".<?php echo $cat->slug; ?>" value=".<?php echo $cat->slug; ?>" type="checkbox"><span><?php echo $cat->name; ?></span></label></li><? } } ?>
</ul>


Исходя из статьи я добавил button-group и data-filter-group, и к инпутам привязал data-filter

Дальше надо вставить скрипт

// store filter for each group
var filters = {};

$demo.on( 'click', '.button', function() {
  var $this = $(this);
  // get group key
  var $buttonGroup = $this.parents('.button-group');
  var filterGroup = $buttonGroup.attr('data-filter-group');
  // set filter for group
  filters[ filterGroup ] = $this.attr('data-filter');
  // combine filters
  var filterValue = concatValues( filters );
  $grid.isotope({ filter: filterValue });
});

// flatten object by concatting values
function concatValues( obj ) {
  var value = '';
  for ( var prop in obj ) {
    value += obj[ prop ];
  }
  return value;
}


И тут у меня ничего не работает дальше.
Можете помочь кто делал?
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
30 нояб. 2024, в 12:52
30000 руб./за проект
30 нояб. 2024, в 11:32
100 руб./за проект