Как сделать сортировку через select?
Пытаюсь сделать сортировку
<select id="mse2_sort" >
<option data-sort="ms_product|publishedon" data-dir="[[+mse2_sort:is=`resource|publishedon:desc`:then=`desc`]]" data-default="desc" class="sort">[[%mse2_sort_publishedon]]</option>
<option data-sort="ms|price" data-dir="[[+mse2_sort:is=``:then=`desc`]]" data-default="desc" class="sort [[+mse2_sort:is=``:then=`active`]]">[[%mse2_sort_price]]</option>
</select>
Как сделать, чтоб при выборе пункт, все заработало?) Заранее спасибо. Комментарии: 10
Можно переписать метод mSearch2.handleSort или подключить к mFilter2 cвой скрипт фронтенда или переопределить метод в другом js файле, например как-то так:
if (typeof(mSearch2) !== "undefined") {
mSearch2.initialized = false;
mSearch2.handleSort = function() {
var params = this.Hash.get();
if (params.sort) {
var sorts = params.sort.split(mse2Config.values_delimeter);
for (var i = 0; i < sorts.length; i++) {
var tmp = sorts[i].split(mse2Config.method_delimeter);
if (tmp[0] && tmp[1]) {
$('#mse2_sort option[data-sort="' + tmp[0] + '"][value="' + tmp[1] + '"]').attr('selected', 'selected').trigger('change');
}
}
}
$(document).off('click', this.options.sort_link);
$(document).on('change', '#mse2_sort', function() {
var selected = $(this).find('option:selected');
var sort = selected.data('sort');
sort += mse2Config.method_delimeter + selected.val();
mse2Config.sort = (sort != mse2Config.start_sort) ? sort : '';
var params = mSearch2.getFilters();
mSearch2.Hash.set(params);
mSearch2.load(params);
});
}
mSearch2.initialize('body');
}
а select представить например так:<select id="mse2_sort">
<option value="asc" data-sort="resource|pagetitle">по умолчанию</option>
<option value="asc" data-sort="ms|price">по возрастанию цены</option>
<option value="desc" data-sort="ms|price">по убыванию цены</option>
</select>
Добрый день!
Если не сложно можно по шагам, как правильно подключить. Заранее спасибо!
Если не сложно можно по шагам, как правильно подключить. Заранее спасибо!
Практически все описано выше.
Добавляете в свой js файл этот код.
Код select'a делаете такой же.
Добавляете в свой js файл этот код.
Код select'a делаете такой же.
1. Я создал js файл и добавил туда этот скрипт.
2. Подключил его на странице (файл назвал filter.js)
3. Добавил select на страницу, но при выборе не чего не происходит.
Посмотреть можно тут
2. Подключил его на странице (файл назвал filter.js)
3. Добавил select на страницу, но при выборе не чего не происходит.
Посмотреть можно тут
Добавьте в файл $(function() { //тут разместите код файла }); либо вызывайте ваш файл после инициализации mSearch2
У данного решения есть к сожалению баги, Вы сможете все довести до ума, соответственно за оплату. Свяжитесь пожалуйста со мной по скайпу in.open
Скайпа не имею, пожалуйста напишите в ЛС свой email.
Похоже что не в этом решение ошибка, ошибка у дополнения msExtraFields, так что прошу прощения за не удобство. И спасибо за такой быстрый ответ!
Все здорово работает. Но теперь перестали работать фильтры, фильтрация срабатывает только после сортировки. Т.е. меняешь ценовой диапазон → ничего, после этого меняешь сортировку → срабатывает и сортировка и фильтр.
Да багов хватает, видел что кто то писал про то, что можно сделать на уровне css, но пока таким решением не обладаю. Надеюсь что найдется решение.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.