Спасибо большое. Бывает мелочь в упор не замечаешь)

Параметр не sortdir, а просто dir.

Нет все равно не хочет. Когда пишу: "sort" => "sm_price desc,ready.value", "sortdir" => "desc", Сортирует по цене в сверху вниз, когда пишу: "sort" => "ready.value desc, sm_price", "sortdir" => "desc", По цене сортирует снизу вверх, по наличию как положено — сначала в наличии. У меня наличие хранится в TV параметре ready

Спасибо. Если я правильно понял, параметр dir можно вообще не указывать и в sort писать все что должно быть в sql запросе после order by?

"sort" => "nalichie asc, sm_price", "dir" => "asc"

они у вас приходят все время из одного — которое select, из второго мы подставляем значение в первый

С Вашим кодом и с моим костылем)) Все правильно работает. А если сделать разные name то тогда при записи в БД нужно делать проверку из какого name данные приходят?

в каком случае? если со старым кодом то из селекта и записывать

У меня идет не отправка а запись в БД, тогда нужно при записи в БД делать дополнительную выборку, из какого поля записывать? Типа проверки на данные?