Как сделать сортировку через 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>
Как сделать, чтоб при выборе пункт, все заработало?) Заранее спасибо.
DimenSi
24 июня 2016, 22:37
modx.pro
11
3 594
0

Комментарии: 10

DocentBF
25 июня 2016, 20:36
4
+4
Можно переписать метод 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>
    Сергей
    23 февраля 2017, 16:35
    0
    Добрый день!
    Если не сложно можно по шагам, как правильно подключить. Заранее спасибо!
      DocentBF
      23 февраля 2017, 16:40
      0
      Практически все описано выше.
      Добавляете в свой js файл этот код.
      Код select'a делаете такой же.
        Сергей
        26 февраля 2017, 17:12
        0
        1. Я создал js файл и добавил туда этот скрипт.
        2. Подключил его на странице (файл назвал filter.js)
        3. Добавил select на страницу, но при выборе не чего не происходит.
        Посмотреть можно тут
          DocentBF
          26 февраля 2017, 20:39
          0
          Добавьте в файл $(function() { //тут разместите код файла }); либо вызывайте ваш файл после инициализации mSearch2
            Сергей
            06 апреля 2017, 17:56
            0
            У данного решения есть к сожалению баги, Вы сможете все довести до ума, соответственно за оплату. Свяжитесь пожалуйста со мной по скайпу in.open
              DocentBF
              06 апреля 2017, 18:15
              0
              Скайпа не имею, пожалуйста напишите в ЛС свой email.
                Сергей
                06 апреля 2017, 18:20
                0
                Похоже что не в этом решение ошибка, ошибка у дополнения msExtraFields, так что прошу прощения за не удобство. И спасибо за такой быстрый ответ!
    Evgeny Epifanov
    02 апреля 2017, 18:53
    0
    Все здорово работает. Но теперь перестали работать фильтры, фильтрация срабатывает только после сортировки. Т.е. меняешь ценовой диапазон → ничего, после этого меняешь сортировку → срабатывает и сортировка и фильтр.
      Сергей
      06 апреля 2017, 17:54
      0
      Да багов хватает, видел что кто то писал про то, что можно сделать на уровне css, но пока таким решением не обладаю. Надеюсь что найдется решение.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      10