По другому это как? Ну так по уму списки выгодно выводить в цикле, дабы не писать по много раз одно и то же, да если еще и в значения опций помещать только изменяемое, а не все скопом, то все упрощается. Кроме того, два ключа определяют 4 набора сортировки, которые с успехом можно заменить на 0-3, где четные значения определяют сортировку tsort по возрастанию, нечетные по убыванию, а деленное по модулю 2 это значение определит поле сортировки sort.
В цикле получаем код списка сравнивая итерацию с единственным GET параметром (0-3), и если равны, то выбираем опцию.
Еще по другому, это на клиенте всю портянку значений опций сравнивать параметром url, но я даже и писать такого не буду, такое можно советовать только ленивым.