Всем привет!
Как многие знают, в битриксе есть выборка рядом стоящих элементов (в 4й параметр arNavStartParams GetList'a передается ключ "nElementID" - ID элемента который будет выбран вместе со своими соседями). И раньше можно было вытягивать "братьев" с разными сортировками.
Пример, в списке товаров есть выбор сортировки "по названию", "по рейтингу". Пользователь выбирает "по рейтингу" и переходит в карточку товара.
Надо вывести следующий и предыдущий товар согласно фильтру и сортировке. Реализация довольна простая: сохранил в сессию фильтр и сортировку, на детальной - сделал запрос.
Так вот, теперь сортировка НЕ используется в подобном запросе.
Цитаты тех.поддержки (тикет №890607):
Если у ТП есть совесть - отправит в отдел разработки.
Если нету - отправят в отдел отвечающий за документацию API (уж извините, не знаю как Вы правильно называетесь)
Как многие знают, в битриксе есть выборка рядом стоящих элементов (в 4й параметр arNavStartParams GetList'a передается ключ "nElementID" - ID элемента который будет выбран вместе со своими соседями). И раньше можно было вытягивать "братьев" с разными сортировками.
Пример, в списке товаров есть выбор сортировки "по названию", "по рейтингу". Пользователь выбирает "по рейтингу" и переходит в карточку товара.
Надо вывести следующий и предыдущий товар согласно фильтру и сортировке. Реализация довольна простая: сохранил в сессию фильтр и сортировку, на детальной - сделал запрос.
Так вот, теперь сортировка НЕ используется в подобном запросе.
Цитаты тех.поддержки (тикет №890607):
Там выборка следующего и предыдущего производится самой базой, поэтому сортировка от продукта работать не будет. |
$DB->Query("SET @rank=0"); $DB->Query(" SEL ECT @rank:=el1.rank FR OM ( SEL ECT @rank:=@rank+1 AS rank, el0.* FR OM ( SELECT ".$sSelect.$strSql.$sOrderBy." ) el0 ) el1 WHERE el1.ID = ".$nElementID." "); $DB->Query("SET @rank2=0"); $res = $DB->Query(" SEL ECT * FR OM ( SELECT @rank2:=@rank2+1 AS RANK, el0.* FR OM ( SELECT ".$sSelect.$strSql.$sOrderBy." ) el0 ) el1 WH ERE el1.RANK between @rank-$nPageSize and @rank+$nPageSize "); так там делается выборка. Как видно, сортировка передается, но как будет результат, зависит от сервера. |
Если у ТП есть совесть - отправит в отдел разработки.
Если нету - отправят в отдел отвечающий за документацию API (уж извините, не знаю как Вы правильно называетесь)
