mSearch2 - сортировка кастомным select 'ом
Возникла необходимость кастомизировать стандартную сортировку компонента mSearch2.
Cортировка имела следующий вид:
Как оказалось компонент не может работать с select, а работает только тегом a. Ну да ладно, попробуем исправить это.
На сайте modx.pro в ветке Вопросы нашел вопрос Как сделать сортировку через select? от пользователя DimenSi. Вопрос частично решен если бы не одно НО
В шаблон вставляем

Элемент еще не может взаимодействовать с компонентом mSearch2.
Cортировка имела следующий вид:

Как оказалось компонент не может работать с select, а работает только тегом a. Ну да ладно, попробуем исправить это.
На сайте modx.pro в ветке Вопросы нашел вопрос Как сделать сортировку через select? от пользователя DimenSi. Вопрос частично решен если бы не одно НО
перестали работать фильтры, фильтрация срабатывает только после сортировки. Т.е. меняешь ценовой диапазон → ничего, после этого меняешь сортировку → срабатывает и сортировка и фильтр.
ПЛАН РАБОТЫ
- Установка кастомного селеста
- Написание скрипта для взаимодействия сортировки с компонентом
Установка кастомного селеста
В качестве select'a будем использовать bootstrap-select. Инструкцию по установке можно посмотреть на сайтеВ шаблон вставляем
<select class="selectpicker pull-right" id="mse2_sort">
<option class="sort" data-sort="ms$price" value="asc" data-icon="glyphicon-sort-by-attributes">По цене</option>
<option class="sort" data-sort="ms$price" value="desc" data-icon="glyphicon-sort-by-attributes-alt">По цене</option>
</select>
Наш select приобрел новый вид:
Элемент еще не может взаимодействовать с компонентом mSearch2.
Пишем скрипт взаимодействия сортировки с компонентом
Сам скрипт получился не объемный, я сам конечно не силен в js. Выношу его на обозрение.$(document).ready(function() {
$(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;
mSearch2.submit();
});
});
- ВКонтакте
- Telegram
- Viber
- РЎРєРѕРїРСвЂВВВВВВВВровать ссылку
28
7 632
+5
Комментарии: 8
29 июля 2018, 15:53
Дополню немного)
На случай если вам нужно еще По-умолчанию
Html
На случай если вам нужно еще По-умолчанию
Html
<option class="sort" data-sort="" value="">По умолчанию</option>
JS$(document).ready(function() {
$(document).on('change', '#mse2_sort', function() {
var selected = $(this).find('option:selected');
var sort = selected.data('sort');
if(sort!=""){
sort += mse2Config.method_delimeter + selected.val();
}else{
sort = '';
}
mse2Config.sort = sort;
mSearch2.submit();
});
});
06 сентября 2018, 13:39
Не хочет работать с сортировкой по названию.
Делаю так
Делаю так
<select class="selectpicker pull-right" id="mse2_sort">
<option class="sort" data-sort="ms|price" value="asc">По цене возр</option>
<option class="sort" data-sort="ms|price" value="desc">По цене убыв</option>
<option class="sort" data-sort="resource|pagetitle" value="asc">Название (А - Я)</option>
<option class="sort" data-sort="resource|pagetitle" value="desc">Название (Я - А)</option>
</select>
Сортирую по названию, а в урле все равно параметр ?sort=ms|price остается. 06 апреля 2020, 20:01
У меня заработало так:
<select class="selectpicker pull-right" id="mse2_sort">
<option class="sort" data-sort="pagetitle" value="asc">Название (А - Я)</option>
<option class="sort" data-sort="pagetitle" value="desc">Название (Я - А)</option>
</select>
06 апреля 2020, 20:06
У меня такой способ сортировки убивает выбор страницы.
Выбираешь вторую страницу (в урл добавляется ?page=2)
Меняешь сортировку — открывается 1-я страница, а из урл уходит ?page=2
Вот бы знающий доделал доработку — выбор селектом способа сортирвки довольно обыденная вещь на других движках
Выбираешь вторую страницу (в урл добавляется ?page=2)
Меняешь сортировку — открывается 1-я страница, а из урл уходит ?page=2
Вот бы знающий доделал доработку — выбор селектом способа сортирвки довольно обыденная вещь на других движках
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Здесь упомянуты:
Компонент | Текущая версия | Закачки |
mSearch2 | 1.14.12-pl от 09.01.2025 | 19 273 |
miniShop2 | 4.4.0-pl от 06.08.2024 | 26 389 |
Вчера в 21:11
Здравствуйте
Есть желание использовать компонент polylang для автоматизации перевода с наименьшими усилиями, но есть пару вопросов, которые хотелось ...
Polylang 143
Вчера в 16:30
Добрый день.
Удалите плагин vpSystem от пакета.
[VirtualPage] - Виртуальные страницы. 183
Вчера в 08:40
Хочестя в тикеты при сохранении комментария добавить кнопку «проверить на ошибки» и при нажатии на нее проверить комментарий на ошибки в нейросети сох...
pbStudio: Создаём сайт с PageBlocks – настройка и главная страница 6
Вчера в 08:36
Нет, через апи идет запрос в ChatGPT, который формирует необходимые данные о блоке, а дальше PageBlocks их разбирает и создает все нужные элементы.
PageBlocks 2.6.0. Настройка меню MODX и гибкое управление страницей пользователя 12
Вчера в 00:03
Не работает парсинг с vk.com, vkvideo.ru
[videoGallery] 1.4.0 Поддержка VK Video и ещё пара фишек 9
17 апреля 2025, 23:01
Можете тоже подсказать как победить данную ошибку?
msGallerySearch - загрузка изображений в галерею minishop2 по ссылке и Google поиск картинок 44
17 апреля 2025, 21:35
Действительно! Самого главного я и не обозначил! Спасибо! Поправлю заголовок.
Речь идет именно о панели менеджера и возможности управления заказами.
...
Вывод перечня заказанных товаров в таблицу с заказами minishop2 (панель менеджера) 8
17 апреля 2025, 17:49
Очевидно ты используешь источник файлов, поэтому в админке путь прописан от источника, хочешь полный путь, откажись от источника файлов.
Не открываются загруженные файлы пишет страница не найдена 2
17 апреля 2025, 15:08
Привет, Henk. Спасибо за ответ! В посте по ссылке меня больше всего заинтересовала фраза «мы интегрировали AI в медиа-менеджер, чтобы значительно упро...
MODX/AI Hackathon Part 2 (27 марта) 4
17 апреля 2025, 13:17
в preg_match проверка проходит, и туда 100% приходит url
Здравствуйте! Первый раз такое вижу, у слеша, не 1 символ в строке, а 9!! Как это делает MODX 2