Буду кэпом и расскажу как сделать вот такую простую штуку буквально правкой шаблона и добавлением пары стрелочек.
![scr2.jpg](https://site-cloud-files.bitrix.info/main/8ef/8ef1c51dafd7d5046e97aba5c99dc3b4/scr2.jpg)
На самом деле все просто, если взглянуть на компоненты Битрикс глазами начинающего разработчика, добавив сюда опыт профессионального разработчика. Но, пойдем по порядку.
Поставим задачу так: нужен вывод списка элементов ИБ по одному на страницу с AJAX-режимом. Легко же? Ну да. news.list с соответствующими настройками и вот что получаем:
![scr1.jpg](https://site-cloud-files.bitrix.info/main/f2c/f2c1d29d5ef86bbf4476a4426c22681d/scr1.jpg)
Теперь нам нужно сформировать две ссылки, одна из которых отвечала бы за одну такую стрелочку, а другая за другую (следующая страница и предыдущая)
![scr4.jpg](https://site-cloud-files.bitrix.info/main/777/77792bfb2ac42265ab9d57638703c9f6/scr4.jpg)
Вариант в лоб - кастомизировать system.pagenavigation, но тут стоп, говнокодить не будем. А обратимся к нашему опыту. Идем внутрь компонента system.pagenavigation, и, что греха таить, методом тыка узнаем, что за текущую страницу отвечает $dbresult->NavPageNomer, а стрелочки строятся путем добавления +/- единицы. И нам еще нужен второй параметр $dbresult->NavNum и третий $dbresult->NNavPageNomer, дальше увидите зачем.
Но где нам в компоненте получить $dbresult? А это и есть объект класса CDatabase, который всегда возвращает CIBlockElement::GetList (в частности). Если заглянуть в news.list, увидим, что разработчики позаботились об этом и передают его в шаблон (в иных или своих компонентах получите его самостоятельно):
Отлично! Осталось вывести стрелочки.
Левую строим так:
(если страница больше первой, выводим стрелочку)
Правую выводим так:
(если еще не дошли до конца, выводим; тут нам и пригодился $dbresult->NNavPageNomer)
Ну а $dbresult->NavNum нам нужен, чтобы понять какая постраничка на странице используется, чтобы идентификаторы страниц не перемешивались, если компонентов на странице несколько. А их может быть сколько угодно
![scr3.jpg](https://site-cloud-files.bitrix.info/main/861/861abec3af22d426d64bbef3bcea0e5e/scr3.jpg)
Ну вот и все
![scr2.jpg](https://site-cloud-files.bitrix.info/main/8ef/8ef1c51dafd7d5046e97aba5c99dc3b4/scr2.jpg)
На самом деле все просто, если взглянуть на компоненты Битрикс глазами начинающего разработчика, добавив сюда опыт профессионального разработчика. Но, пойдем по порядку.
Поставим задачу так: нужен вывод списка элементов ИБ по одному на страницу с AJAX-режимом. Легко же? Ну да. news.list с соответствующими настройками и вот что получаем:
![scr1.jpg](https://site-cloud-files.bitrix.info/main/f2c/f2c1d29d5ef86bbf4476a4426c22681d/scr1.jpg)
Теперь нам нужно сформировать две ссылки, одна из которых отвечала бы за одну такую стрелочку, а другая за другую (следующая страница и предыдущая)
![scr4.jpg](https://site-cloud-files.bitrix.info/main/777/77792bfb2ac42265ab9d57638703c9f6/scr4.jpg)
Вариант в лоб - кастомизировать system.pagenavigation, но тут стоп, говнокодить не будем. А обратимся к нашему опыту. Идем внутрь компонента system.pagenavigation, и, что греха таить, методом тыка узнаем, что за текущую страницу отвечает $dbresult->NavPageNomer, а стрелочки строятся путем добавления +/- единицы. И нам еще нужен второй параметр $dbresult->NavNum и третий $dbresult->NNavPageNomer, дальше увидите зачем.
Но где нам в компоненте получить $dbresult? А это и есть объект класса CDatabase, который всегда возвращает CIBlockElement::GetList (в частности). Если заглянуть в news.list, увидим, что разработчики позаботились об этом и передают его в шаблон (в иных или своих компонентах получите его самостоятельно):
$arResult["NAV_RESULT"] = $rsElement; |
Отлично! Осталось вывести стрелочки.
Левую строим так:
<?if ($arResult['NAV_RESULT']->NavPageNomer > 1):?> <a href="<?= $APPLICATION->GetCurPageParam('PAGEN_'.$arResult['NAV_RESULT']->NavNum.'='.($arResult['NAV_RESULT']->NavPageNomer-1), array('PAGEN_'.$arResult['NAV_RESULT']->NavNum))?>" style="font-size: 32px; text-decoration: none;">←</a> <?endif;?> |
(если страница больше первой, выводим стрелочку)
Правую выводим так:
<?if ($arResult['NAV_RESULT']->NavPageNomer < $arResult['NAV_RESULT']->NavPageCount):?> <a href="<?= $APPLICATION->GetCurPageParam('PAGEN_'.$arResult['NAV_RESULT']->NavNum.'='.($arResult['NAV_RESULT']->NavPageNomer+1), array('PAGEN_'.$arResult['NAV_RESULT']->NavNum))?>" style="font-size: 32px; text-decoration: none;">→</a> <?endif;?> |
(если еще не дошли до конца, выводим; тут нам и пригодился $dbresult->NNavPageNomer)
Ну а $dbresult->NavNum нам нужен, чтобы понять какая постраничка на странице используется, чтобы идентификаторы страниц не перемешивались, если компонентов на странице несколько. А их может быть сколько угодно
![scr3.jpg](https://site-cloud-files.bitrix.info/main/861/861abec3af22d426d64bbef3bcea0e5e/scr3.jpg)
Ну вот и все
![С улыбкой :)](/upload/main/smiles/3/bx_smile_smile.png)