"Показать по" в списке новостей

Способ, с помощью которого можно добавить "Показать по" в списке новостей.

Данный функционал используется, когда в списке новостей пользователь сам может решать по сколько элементов должно быть показано на одной странице.

Для этого перед выводом компонента (если он находится в составе комплексного):

 <?php
 $GLOBALS['mycomponent_variable'] = $arParams["NEWS_COUNT"];
 if (array_key_exists("showBy", $_REQUEST)) {
    if ( intVal($_REQUEST["showBy"]) && in_array(intVal($_REQUEST["showBy"]), array(5, 20, 35)) ) {
       $GLOBALS['mycomponent_variable'] = intVal($_REQUEST["showBy"]);
       $_SESSION["showBy"] = $GLOBALS['mycomponent_variable'];
    } elseif ($_SESSION["showBy"]) {
       $GLOBALS['mycomponent_variable'] = intVal($_SESSION["showBy"]);
    }
 }
 ?>

В вызове компонента:

 <?$APPLICATION->IncludeComponent(
 "bitrix:news.list",
 "",
 Array(
 "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
 "IBLOCK_ID" => $arParams["IBLOCK_ID"],
 "NEWS_COUNT" => $GLOBALS['mycomponent_variable'],
 ...

И в самом шаблоне компонента:

 <div class="show_number">
    <span class="show_title">Показать по</span>
    <ul class="number_list selectdropdown">
    <? for( $i = 5; $i <= 40; $i+=15 ) : ?>
       <li>
          <a rel="nofollow" <? if ($i == $GLOBALS['mycomponent_variable']): ?>class="current"<? endif; ?>
          href="<?= $APPLICATION->GetCurPageParam('showBy='.$i, array('showBy', 'mode')) ?>">
             <?= $i ?>
          </a>
       </li>
    <? endfor; ?>
    </ul>
 </div>


bitrixone © 2024