+7 495 008 8452 пн.-пт. 10:00 – 17:00
Загрузка...
Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


Постраничка как в соц. сетях.

Всем мы знаем эти бесконечные ленты новостей в соц. сетях. И это мне кажется удобно, когда контент подгружаться постепенно и не требуется щелкать на каждую страницу и жать пока она загрузиться.  Вот шаблон компонента bitrix::system.pagenavigation:

Код template.php
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?CJSCore::Init(array("jquery"));?>
<?
$arResult["NavQueryString"] = str_replace('&','&',$arResult["NavQueryString"]);
$do = preg_match('/.*bxajaxid=(\S+).*/',$arResult["NavQueryString"],$bxajaxid);
?>
<sc ript>
   var ajax_nav = <?=CUtil::PhpToJSObject($arResult)?>;
   var bxajaxid = "<?=$bxajaxid[1]?>";
</sc ript>
<?
if(!$do)
{
   ?>
   <div id ='ajax_nav'>
   </div>
   <sc ript type="text/javascript">
      /* isset for javascript */
      window.isset = function()
      {
         if (arguments.length===0) return false;
         var buff=arguments[0];
         for (var i=0; i<arguments.length; i++)
         {
            if (typeof(buff)==='undefined') return false;
            buff = buff[arguments[i+1]];
         }
         return true;
      }
      BX.ready(
         function()
         {
            $(window).scroll(
               function()
               {
                  if($(window).scrollTop()+$(window).height()>=$('#ajax_nav').offset().top)
                  {
                     if (ajax_nav.NavPageCount > ajax_nav.NavPageNomer )
                     {
                        if(bxajaxid.length == "")
                        {
                           bxajaxid = $('#ajax_nav').parents("div[id*='comp_']").attr('id').replace('comp_','');
                           url = location.pathname+'?PAGEN_'+ajax_nav.NavNum+'='+(parseInt(ajax_nav.NavPageNomer)+1)+'&bxajaxid='+bxajaxid+'&'+ ajax_nav.NavQueryString
                        }
                        else url = location.pathname+'?PAGEN_'+ajax_nav.NavNum+'='+(parseInt(ajax_nav.NavPageNomer)+1)+'&'+ ajax_nav.NavQueryString;
                        if (!isset(window, "ajax_sent")) //&& )
                        {
                           ajax_sent = true;
                           $('#ajax_nav').addClass('bx-core-waitwindow'); 
                           $.get(url,function(data)
                              {
                                 $('#ajax_nav').removeClass('bx-core-waitwindow');
                                 bxajaxid = $('#ajax_nav').before(data);
                                 ajax_sent = false;
                              });

                        }else if (ajax_sent == false)
                        {
                           ajax_sent = true;
                           $('#ajax_nav').addClass('bx-core-waitwindow');
                           $.get(url,function(data)
                              {
                                 $('#ajax_nav').removeClass('bx-core-waitwindow');
                                 bxajaxid = $('#ajax_nav').before(data);
                                 ajax_sent = false;                                 
                              });
                        }
                     }
                  }
               });
         });
   </sc ript>
<?}?> 
Данный шаблон работает только  в ajax режиме, не забудьте включить его для компонента в котором будете использовать.

capture.png

Достаточной распаковать архив шаблона в /bitrix/#Шаблон сайта#/components/bitrix/system.pagenavigation.
И указать его в настройках постраничной навигации.

capture_2.png
P.S: В шаблоне списка могут быть элементы вывод, которых требуется только 1 раз. Например - фильтр, или ссылка на подключения к  RSS -каналу.
То вывод данных элементов я бы посетовал заключить в условие.
if(!isset($_REQUEST['bxajaxid'])){
   #Часть кода которая должна отработать однократно на страницы.#
} 


Назад в раздел

Подписаться на новые материалы раздела:
Загрузка...