Ваш код вырезан из контекста. Скорее всего, вы еще используете какой-то компонент. Вывод списка товаров/разделов с возможностью сортировки этого списка? Скорее всего в этом компоненте используется запись выбранной сортировки в $_SESSION или куках и значения используются оттуда, поэтому у вас
но сортировка работает
.
И я не очень понял фразу
Так вот, $APPLICATION->GetCurPageParam при его использовании по идее должно отображаться в url гет запрос но там пусто
но если правильно понял то как-раз моя догадка ранее объясняет такое поведение: используются значения из запомненных ранее значениях в сесси/куках, но пустом гет-запросе.
А Ваш код не корректно работает, потому как ошибка в использовании функции:
$APPLICATION->GetCurPageParam("", array("?order"));
Во втором параметре должен быть массив переменных для удаления. Переменной как "?order" не бывает, надо писать без "?", просто массив из ключей get запроса.
Вот для теста можете попробовать. Создайте на сайте страничку и запустите, например site.ru/test.php?order=new и увидите, что за чехарда получается, если не правильно использовать параметры функции.
<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
/**
* @global CMain $APPLICATION
*/
var_dump($APPLICATION->GetCurPageParam());
var_dump($APPLICATION->GetCurPageParam("", ["?order"]));
var_dump($APPLICATION->GetCurPageParam("", ["order"]));
var_dump($APPLICATION->GetCurPageParam("order=new"));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");