Всем привет!
Как многие знают, в битриксе есть выборка рядом стоящих элементов (в 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 (уж извините, не знаю как Вы правильно называетесь)