Сортировка в битрикс

Есть сайт, на нём раздел с каталогом товаров, у товаров (элементов инфоблока) есть свойство PRICE (их цена), сейчас при открытии каталога товары выводятся не упорядочено, а мне нужно, чтобы они выводились по возрастанию цены.

Вот код странички, на которую добавлен компонент:

<?
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");
$APPLICATION->SetTitle("Каталог");
?>
<div class="main">


    <? $APPLICATION->IncludeComponent("bitrix:news",
        "catalog", array(
            "ADD_ELEMENT_CHAIN" => "N",
            "ADD_SECTIONS_CHAIN" => "Y",
            "AJAX_MODE" => "N",
            "AJAX_OPTION_ADDITIONAL" => "",
            "AJAX_OPTION_HISTORY" => "N",
            "AJAX_OPTION_JUMP" => "N",
            "AJAX_OPTION_STYLE" => "Y",
            "BROWSER_TITLE" => "-",
            "CACHE_FILTER" => "N",
            "CACHE_GROUPS" => "Y",
            "CACHE_TIME" => "36000000",
            "CACHE_TYPE" => "A",
            "CHECK_DATES" => "Y",
            "COMPONENT_TEMPLATE" => "catalog",
            "DETAIL_ACTIVE_DATE_FORMAT" => "d.m.Y",
            "DETAIL_DISPLAY_BOTTOM_PAGER" => "Y",
            "DETAIL_DISPLAY_TOP_PAGER" => "N",
            "DETAIL_FIELD_CODE" => array(
                0 => "",
                1 => "",
                2 => "",
                3 => "",
            ),
            "DETAIL_PAGER_SHOW_ALL" => "Y",
            "DETAIL_PAGER_TEMPLATE" => "",
            "DETAIL_PAGER_TITLE" => "Страница",
            "DETAIL_PROPERTY_CODE" => array(
                0 => "DESCRIPTION",
                1 => "PRICE",
                2 => "VALUTA",
                3 => "SALE",
            ),
            "DETAIL_SET_CANONICAL_URL" => "N",
            "DISPLAY_BOTTOM_PAGER" => "Y",
            "DISPLAY_DATE" => "Y",
            "DISPLAY_NAME" => "Y",
            "DISPLAY_PICTURE" => "Y",
            "DISPLAY_PREVIEW_TEXT" => "Y",
            "DISPLAY_TOP_PAGER" => "N",
            "HIDE_LINK_WHEN_NO_DETAIL" => "N",
            "IBLOCK_ID" => "6",
            "IBLOCK_TYPE" => "catalog",
            "ELEMENT_SORT_FIELD" =>  "property_PRICE",
            "ELEMENT_SORT_ORDER" => "desc",
            "INCLUDE_IBLOCK_INTO_CHAIN" => "Y",
            "LIST_ACTIVE_DATE_FORMAT" => "d.m.Y",
            "LIST_FIELD_CODE" => array(
                0 => "",
                1 => "",
                2 => "",
                3 => "",
            ),
            "LIST_PROPERTY_CODE" => array(
                0 => "DESCRIPTION",
                1 => "PRICE",
                2 => "VALUTA",
                3 => "SALE",
            ),
            "MESSAGE_404" => "",
            "META_DESCRIPTION" => "-",
            "META_KEYWORDS" => "-",
            "NEWS_COUNT" => "100",
            "PAGER_BASE_LINK_ENABLE" => "N",
            "PAGER_DESC_NUMBERING" => "N",
            "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
            "PAGER_SHOW_ALL" => "N",
            "PAGER_SHOW_ALWAYS" => "N",
            "PAGER_TEMPLATE" => ".default",
            "PAGER_TITLE" => "Новости",
            "PREVIEW_TRUNCATE_LEN" => "",
            "SEF_FOLDER" => "/katalog/",
            "SEF_MODE" => "Y",
            "SET_LAST_MODIFIED" => "N",
            "SET_STATUS_404" => "N",
            "SET_TITLE" => "Y",
            "SHOW_404" => "N",

            "STRICT_SECTION_CHECK" => "N",
            "USE_CATEGORIES" => "N",
            "USE_FILTER" => "N",
            "USE_PERMISSIONS" => "N",
            "USE_RATING" => "N",
            "USE_REVIEW" => "N",
            "USE_RSS" => "N",
            "USE_SEARCH" => "N",
            "USE_SHARE" => "N",
            "SEF_URL_TEMPLATES" => array(
                "news" => "",
                "section" => "",
                "detail" => "#ELEMENT_ID#/",
            )
        ),
        false,
        array(
            "ACTIVE_COMPONENT" => "Y"
        )
    ); ?>
</div><? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php"); ?>

А вот код самого компонента, который обрабатывает данные и выводит их на страницу:

<?php
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule('iblock');


if ($_POST["id"]) {
    $sec_id = $_POST["id"];

    $arSelect = array("ID", "NAME", "PREVIEW_PICTURE", "PROPERTY_DESCRIPTION", "PROPERTY_PRICE", "DETAIL_TEXT", "PROPERTY_VALUTA");
    $arFilter = array("IBLOCK_ID" => 6, "IBLOCK_SECTION_ID" => $sec_id, "ACTIVE_DATE" => "Y", "ACTIVE" => "Y" );
    $res = CIBlockElement::GetList(array(), $arFilter, false, array("nPageSize" => 50), $arSelect);


    // Подгружаем данные с ЦБ РФ
    $daily_currency = simplexml_load_file('http://www.cbr.ru/scripts/XML_daily.asp');
    $valutes = $daily_currency->Valute;

    while ($ob = $res->GetNextElement()) {
        $arFields = $ob->GetFields();

        $price = $arFields["PROPERTY_PRICE_VALUE"];
        $pic = CFile::GetPath($arFields["PREVIEW_PICTURE"]);

        if ($arFields["PROPERTY_VALUTA_VALUE"]) {

            // Приводим цену к формату 9999.9999
            $price = str_replace(',', '.', $price);
            $price = preg_replace('/[^.0-9]+/', '', $price);

            // Цикл поиска нужной валюты по её коду (берется из базы)
            foreach ($valutes as $value) {
                if (strcasecmp($value->CharCode, $arFields["PROPERTY_VALUTA_VALUE"]) != 0) continue;

                // Приводим данные к числовому значению
                $v = doubleval(str_replace(',', '.', $value->Value));
                $n = intval($value->Nominal, 10);

                // Считаем цену
                $price = ($price * 0.95) * $v / $n;
                break;
            }
        }

        echo htmlspecialchars('<div class="catalog__item" id="', ENT_HTML5) . $arFields["ID"] . htmlspecialchars('">', ENT_HTML5);
        echo htmlspecialchars('<div class="catalog-good chemitry-good">', ENT_HTML5);
        echo htmlspecialchars('<div class="catalog-good__image" style="background-image: url(', ENT_HTML5) . $pic . htmlspecialchars(')"></div>', ENT_HTML5);
        echo htmlspecialchars('<div class="catalog-good__about">');
        echo htmlspecialchars('<div class="catalog-good__info">');
        echo htmlspecialchars('<div class="catalog-good__title chemistry-good__title">', ENT_HTML5) . $arFields["NAME"] . htmlspecialchars('</div>', ENT_HTML5);
        echo htmlspecialchars('<div class="chemistry-good__text">', ENT_HTML5);
        echo str_ireplace(",", "<br>", $arFields["PROPERTY_DESCRIPTION_VALUE"]);
        echo htmlspecialchars('</div>', ENT_HTML5);
        echo htmlspecialchars('<div class="chemistry-good__price">', ENT_HTML5);

        // Если указана валюта, выводим цену в формате 9 999,99
        // Если не указана, просто выводим
        if ($arFields["PROPERTY_VALUTA_VALUE"]) {
            echo htmlspecialchars('Цена: ', ENT_HTML5) . number_format($price, 2, ',', ' ') . htmlspecialchars(' руб.', ENT_HTML5);
        } else {
            echo htmlspecialchars('Цена: ', ENT_HTML5) . $price;
        }

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Evgeniy Kuznetsov

Вместо этого:

$res = CIBlockElement::GetList(array(), $arFilter, false, array("nPageSize" => 50), $arSelect);

Добавьте это:

$res = CIBlockElement::GetList($arParams["SORT"], $arFilter, false, array("nPageSize" => 50), $arSelect);

И при вызове компонента добавьте параметр SORT:

$APPLICATION->IncludeComponent("bitrix:news",
        "catalog", array(
            "SORT" => ["PROPERTY_PRICE"=>"ASC"]
            ...

CIBlockElement::GetList

→ Ссылка