Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Сортировка при выводе списка элементов торгового каталога

00 голосов
6
Такая проблема:
Идет экспорт списка товаров из 1С, соответсвенно ID элементов задаются рандомно.
При выводе списка, он никак не сортируется и не понятно где задать правила сортировки, вот стандартный шаблон вывода списка.

Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<div class="catalog-section-list">
<ul>
<?
$CURRENT_DEPTH=$arResult["SECTION"]["DEPTH_LEVEL"]+1;
foreach($arResult["SECTIONS"] as $arSection):
   if($CURRENT_DEPTH<$arSection["DEPTH_LEVEL"])
      echo "<ul>";
   elseif($CURRENT_DEPTH>$arSection["DEPTH_LEVEL"])
      echo str_repeat("</ul>", $CURRENT_DEPTH - $arSection["DEPTH_LEVEL"]);
   $CURRENT_DEPTH = $arSection["DEPTH_LEVEL"];
?>
   <li><a href="<?=$arSection["SECTION_PAGE_URL"]?>"><?=$arSection["NAME"]?><?if($arParams["COUNT_ELEMENTS"]):?>&nbsp;(<?=$arSection["ELEMENT_CNT"]?>)<?endif;?></a></li>
<?endforeach?>
</ul>
</div>


В настройках компонента сортировка такая, но к главному списку она не применяется. Только внутри элементов идет список в алфавитном порядке.

Код
        "SECTION_SORT_FIELD"    =>      "name",
        "SECTION_SORT_ORDER"    =>      "desc",
        "SHOW_TOP_ELEMENTS"     =>      "N",
        "PAGE_ELEMENT_COUNT"    =>      "30",
        "LINE_ELEMENT_COUNT"    =>      "1",
        "ELEMENT_SORT_FIELD"    =>      "name",
        "ELEMENT_SORT_ORDER"    =>      "desc"
спросил 06 Сен, 13 от Shemet (160 баллов)

6 Ответы

00 голосов
Возможно, я не совсем понятно описал проблему.
На страницу выведен компонент bitrix:catalog
Список bitrix:catalog.section.list при этом сортирутся в рандомном порядке (не по id, не по алфавиту).
Т.е. например, идет список:

Программное обеспечение (4) - При клике на любой из разделов, внутри него с сортировкой все впорядке.
Сканеры (8)
Жесткие диски (5)

Вопрос: как осортировать основной список bitrix:catalog.section.list?
ответил 06 Сен, 13 от Shemet (160 баллов)
00 голосов
Так все-таки, это глюк что основной список не сортируется? Или надо задавать какие-то дополнительные правила сортировки? Или вопрос совем не корректен и нужны еще подробности?

Вот основной список, так, как его выводит компонент, сортировки нет
Рисунок

Но, например при клике на "Кабели и переходники" внутри раздела сортировка нормально работает.
Рисунок
ответил 29 Ноя, 13 от Shemet (160 баллов)
00 голосов
После экспорта в админке у разделов в поле Сорт. значения у всех разделов одинаковые или отличаются?
ответил 11 Март, 14 от VSvoemUme (160 баллов)
00 голосов
Есть пара совпадающих номеров, остальные отличаются. Откуда берется цифра "Индекс сортировки" при экспорте из 1С? И что будет с экспортом, если я вручную эти индексы расставлю?
ответил 02 Июль, 14 от Shemet (160 баллов)
00 голосов
ну у меня похожая проблема, при разборе работы выяснилось, что при экспорте из 1С сортировка назначается по возрастанию с шагом 10, а компонент дерево разделов строит по сортирофке left_margin. а Left_margin сортируется сначала по полю Sort.
Я решил проблему в лоб. Создал файл sort.php со следующим содержанием


require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

$strSql = "UPDATE b_iblock_section SET SORT='500' WHERE `IBLOCK_ID`='код блока'";
$res = $DB->Query($strSql, false, $err_mess.__LINE__);
if(CModule::IncludeModule("iblock"))
{
$obSect = new CIBlockSection;
CIBlockSection::Resort(код блока);
}


Где выделено красным надо заменить на свой код инфоблока.

После окончания экспорта я вызываю этот файл http://сайт/sort.php и он меняет у всех разделов инфоблока индекс сортировки и пересчитывает Left_margin после этого разделы выводятся отсортированными по алфавиту.

Если кто предложит идею красивее я буду рад.
ответил 01 Ноя, 14 от VSvoemUme (160 баллов)
00 голосов
Спасибо за код :) И правда, интересно, можно ли эту проблему по другому решить?
ответил 01 Март, 15 от Shemet (160 баллов)

Похожие вопросы

0 голосов
2 ответов
спросил 09 Янв, 14 от Mexx (140 баллов)
0 голосов
3 ответов
0 голосов
3 ответов
0 голосов
3 ответов