Буду кэпом и расскажу как сделать вот такую простую штуку буквально правкой шаблона и добавлением пары стрелочек.
На самом деле все просто, если взглянуть на компоненты Битрикс глазами начинающего разработчика, добавив сюда опыт профессионального разработчика. Но, пойдем по порядку.
Поставим задачу так: нужен вывод списка элементов ИБ по одному на страницу с AJAX-режимом. Легко же? Ну да. news.list с соответствующими настройками и вот что получаем:
Теперь нам нужно сформировать две ссылки, одна из которых отвечала бы за одну такую стрелочку, а другая за другую (следующая страница и предыдущая)
Вариант в лоб - кастомизировать system.pagenavigation, но тут стоп, говнокодить не будем. А обратимся к нашему опыту. Идем внутрь компонента system.pagenavigation, и, что греха таить, методом тыка узнаем, что за текущую страницу отвечает $dbresult->NavPageNomer, а стрелочки строятся путем добавления +/- единицы. И нам еще нужен второй параметр $dbresult->NavNum и третий $dbresult->NNavPageNomer, дальше увидите зачем.
Но где нам в компоненте получить $dbresult? А это и есть объект класса CDatabase, который всегда возвращает CIBlockElement::GetList (в частности). Если заглянуть в news.list, увидим, что разработчики позаботились об этом и передают его в шаблон (в иных или своих компонентах получите его самостоятельно):
Отлично! Осталось вывести стрелочки.
Левую строим так:
(если страница больше первой, выводим стрелочку)
Правую выводим так:
(если еще не дошли до конца, выводим; тут нам и пригодился $dbresult->NNavPageNomer)
Ну а $dbresult->NavNum нам нужен, чтобы понять какая постраничка на странице используется, чтобы идентификаторы страниц не перемешивались, если компонентов на странице несколько. А их может быть сколько угодно
Ну вот и все
На самом деле все просто, если взглянуть на компоненты Битрикс глазами начинающего разработчика, добавив сюда опыт профессионального разработчика. Но, пойдем по порядку.
Поставим задачу так: нужен вывод списка элементов ИБ по одному на страницу с AJAX-режимом. Легко же? Ну да. news.list с соответствующими настройками и вот что получаем:
Теперь нам нужно сформировать две ссылки, одна из которых отвечала бы за одну такую стрелочку, а другая за другую (следующая страница и предыдущая)
Вариант в лоб - кастомизировать 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 нам нужен, чтобы понять какая постраничка на странице используется, чтобы идентификаторы страниц не перемешивались, если компонентов на странице несколько. А их может быть сколько угодно
Ну вот и все