Для начала, фильтрация и сортировка - это разные термины.
Теперь по поводу сортировки элементов, которые выводятся через макрос %data doSelection()%.
В случaе, если вы работает с usel протоколом, то вам необходимо в usel файл добавить параметры, которые будет задавать название поля и направление для сортировки ( (см. документацию (http://dev.docs.umi-cms.ru/shablony_i_makrosy/xslt-shablonizator_umi_cms/vyborki_iz_bd_protokol_usel/#giveParams))).
Пример usel файла для вывода всех товаров с определенной сортировкой:
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target result="pages">
<type module="catalog" method="object" />
</target>
<sort order="{2}">{1}</sort>
</selection>
Теперь, при вызове макроса doSelection, мы можем передать параметр 1 и 2.
Нам осталось сделать так, чтобы при выборе выпадающего списка система передавала макросу doSelection параметры сортировки.
Сделаем это так:
1. создадим js обработчик, который при выборе значения из выпадающего списка для сортировки будет перегружать страницу с заданными параметрами
<select onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);">
<option value="">Select...</option>
<option value="?field_name=price&order=ascending">Цена по возрастанию</option>
<option value="?field_name=price&order=descending">Цена по убыванию</option>
</select>
2. при загрузке страницы с макросом doSelection будем подхватывать параметры из адресной строки (пример параметров ?field_name=price&order=descending) и передавать их в макрос. Для этого добавим макрос в файл /classes/modules/custom.php
public function getReq($name) {
$value = getRequest($name);
return $value;
}
3. И сделаем вызов этого макроса при вызове doSelection для передачи параметров
%data doSelection('usel_tpl', usel_file , %custom getReq(field_name)%, %custom getReq(order)%)%
P.S. все примеры писались тут же без проверки, так что могут мелкие баги, но суть ясна и направление задано, пробуйте.