Столкнулся с тем же вопросом.
Решил проще: чем сортировать каждвый раз при построении меню, сделал скрипт для автоматического заполнения поля "Сортировка".
Т.е. скрипт запускается разово и по нужному критерию заполняет поля "Сортировка" в возрастающем порядке.
Код |
---|
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) {
include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
}
$CATALOG_ID=5;
$arSort=Array("NAME" => "ASC");
$bs = new CIBlockSection;
$counter=1000;
$step=100;
$arFilter = Array(
"IBLOCK_ID"=>array($CATALOG_ID),
);
$arSelect = Array("ID", "NAME", "IBLOCK_ID", "SORT");
$dbRes = CIBlockSection::GetList($arSort, $arFilter, false, $arSelect, false);
while ($row = $dbRes->Fetch()) {
Echo $row["NAME"] . " " . $row["SORT"] . " " . $counter . "<br />";
$bs->Update($row["ID"],Array("SORT" => $counter),false);
$counter+=$step;
}
CIBlockSection::ReSort($CATALOG_ID);
?>
|
Перед запуском нужно задать ID инфоблока в переменной $CATALOG_ID
При желании критерий сортировки можно поменять, задав другой $arSort