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

Сортировка

00 голосов
1
Вопрос: Как при отображении элементов инфблока сделать выборку элементов по рейтингу просмотров независимо от вложенных подгрупп?
Прооблема заключается в том, что выводит по подгруппам: сначала отсортированые элементы одной подгруппы, потом отсортированные другой.

Необходимо чтобы производил сортировку всех элементов независимо от подгрупп в которых находятся элементы, т.е. в частности : необходимо составить топ по просмотрам фотогалереи, и чтоб он выдавал самые популярные из всей галереи, а не из каждой подгруппы.
Код

      /************************************
                  Разделы
      ************************************/


$arSection = CIBlock::GetByID($IBLOCK_ID);
         /************************************
                  Элементы
         ************************************/

                  $arSelect = array(
            "ID",
            "IBLOCK_ID",
            "IBLOCK_SECTION_ID",
            "NAME",
            "PREVIEW_PICTURE",
            "DETAIL_PICTURE",
            "DETAIL_PAGE_URL",
            "SHOW_COUNTER"
            );

                  $arrFilter["ACTIVE"] = "Y";
        $arrFilter["IBLOCK_ID"] = $IBLOCK_ID;
         $arrFilter["IBLOCK_TYPE"] = $IBLOCK_TYPE;
$res = CIBlockElement::GetList(array($ELEMENT_SORT_FIELD => $ELEMENT_SORT_ORDER, "ID" => "desc"),Array("IBLOCK_ID"=>$IBLOCK_ID,"ACTIVE"=>"Y") , false, Array("nPageSize"=>$ELEMENT_COUNT), $arSelect);
if ($rsElements = $res):
            $rsElements->NavStart($ELEMENT_COUNT);
            $count = intval($rsElements->SelectedRowsCount());
            if ($count>0):

      /****************************************************************
                        HTML форма
      ****************************************************************/
      ?>
      <a class="subtitletext" href="<?=$SECTION_URL?>&SECTION_ID=<?=$arSection["ID"]?>"><?echo htmlspecialchars($arSection["NAME"])?></a><br><img height="10" src="/bitrix/images/1.gif" width="1"><br>
      <table cellpadding="10" cellspacing="0" border="0" width="80%">   
         <tr>
            <?
            $n=1;
            $cell = 0;
            while ($obElement = $rsElements->GetNextElement()):
               $cell++;
               $arElement = $obElement->GetFields();
               $image1 = intval($arElement["PREVIEW_PICTURE"])<=0 ? $arElement["DETAIL_PICTURE"] : $arElement["PREVIEW_PICTURE"];
               $image2 = intval($arElement["DETAIL_PICTURE"])<=0 ? $arElement["PREVIEW_PICTURE"] : $arElement["DETAIL_PICTURE"];
            ?>
            <td valign="top" width="<?=(100/$LINE_ELEMENT_COUNT)?>%">
               <table cellpadding="2" cellspacing="0" border="0">
                  <tr>
                     <td valign="top"><?echo CFile::Show2Images($image1, $image2, 150, 150, "hspace='0' vspace='0' border='0' title='".$arElement["NAME"]."'", true);?></td>
                  </tr>
                  <tr>
                     <td valign="top"><font class="text"><a href="<?=$arElement["DETAIL_PAGE_URL"]?>"><?=$arElement["NAME"]?></a>
              <?echo $arElement["SHOW_COUNTER"]; ?><br>
              <?echo $arElement["IBLOCK_SECTION_ID"]; ?><br>
              <?echo  $ELEMENT_SORT_FIELD;?>
              </font></td>
                  </tr>
               </table></td>
               <?
               if($n%$LINE_ELEMENT_COUNT == 0):
     &nb
спросил 09 Май, 14 от Kania (5,180 баллов)

1 Ответ

00 голосов
Разобрался сам, оказывается по умолчанию в переменной $ELEMENT_SORT_FIELD хранилось значение "shows", а это усредненное количество показов (количество показов / продолжительность показа);
вручную поставил значение "show_counter" и теперь отличный топ!!!
ответил 12 Янв, 15 от Kania (5,180 баллов)

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

0 голосов
0 ответов
спросил 12 Май, 16 от loony (540 баллов)
0 голосов
1 ответ
0 голосов
1 ответ
0 голосов
2 ответов
спросил 27 Апр, 14 от SenucS (100 баллов)