Наверх
 

Навигация
Опрос
Есть ли на этом сайте что-нибудь полезное для Вас?
Да, конечно есть
Нет
Пока еще не нашел

База уроков » » » » Навигация вперед и назад в элементах инфоблока

Навигация вперед и назад в элементах инфоблока

20 июн 2014 | Комментариев: 0 | Просмотров: 2375

Навигация вперед и назад в элементах инфоблока

 

В этой статье я расскажу как сделать навигацию вперед и назад в элементе инфоблока. Если впереди или позади больше не будет элемента, то отображаться не будет. Теперь расскажу как это делать. Итак, первым делом копируем шаблон компонента news.detail (catalog.element или они могут входить в состав комплексного news, catalog) и создаем в директории с template.php файл result_modifier.php и вставляем этот код:

 


<?
// сортировку берем из параметров компонента
$arSort = array(
$arParams["SORT_BY1"]=>$arParams["SORT_ORDER1"],
$arParams["SORT_BY2"]=>$arParams["SORT_ORDER2"],
);
// выбрать нужно id элемента, его имя и ссылку. Можно добавить любые другие поля, например PREVIEW_PICTURE или PREVIEW_TEXT
$arSelect = array(
"ID",
"NAME",
"DETAIL_PAGE_URL"
);
// выбираем активные элементы из нужного инфоблока. Раскомментировав строку можно ограничить секцией
$arFilter = array (
"IBLOCK_ID" => $arResult["IBLOCK_ID"],
//"SECTION_CODE" => $arParams["SECTION_CODE"],
"ACTIVE" => "Y",
"CHECK_PERMISSIONS" => "Y",
);
// выбирать будем по 1 соседу с каждой стороны от текущего
$arNavParams = array(
"nPageSize" => 1,
"nElementID" => $arResult["ID"],
);
$arItems = Array();
$rsElement = CIBlockElement::GetList($arSort, $arFilter, false, $arNavParams, $arSelect);
$rsElement->SetUrlTemplates($arParams["DETAIL_URL"]);
while($obElement = $rsElement->GetNextElement())
$arItems[] = $obElement->GetFields();
// возвращается от 1го до 3х элементов в зависимости от наличия соседей, обрабатываем эту ситуацию
if(count($arItems)==3):
$arResult["TORIGHT"] = Array("NAME"=>$arItems[0]["NAME"], "URL"=>$arItems[0]["DETAIL_PAGE_URL"]);
$arResult["TOLEFT"] = Array("NAME"=>$arItems[2]["NAME"], "URL"=>$arItems[2]["DETAIL_PAGE_URL"]);
elseif(count($arItems)==2):
if($arItems[0]["ID"]!=$arResult["ID"])
$arResult["TORIGHT"] = Array("NAME"=>$arItems[0]["NAME"], "URL"=>$arItems[0]["DETAIL_PAGE_URL"]);
else
$arResult["TOLEFT"] = Array("NAME"=>$arItems[1]["NAME"], "URL"=>$arItems[1]["DETAIL_PAGE_URL"]);
endif;
// в $arResult["TORIGHT"] и $arResult["TOLEFT"] лежат массивы с информацией о соседних элементах
?>

 

 

Теперь выводим в шаблоне ссылки переходов. Для это в файле template.php вставить этот код:


<?if(is_array($arResult["TOLEFT"])):?><a class="fleft" id="previous_page" href="<?=$arResult["TOLEFT"]["URL"]?>">< <?=$arResult["TOLEFT"]["NAME"]?></a><?endif?><?if(is_array($arResult["TORIGHT"])):?><a class="fright" id="next_page" href="<?=$arResult["TORIGHT"]["URL"]?>"><?=$arResult["TORIGHT"]["NAME"]?> ></a><?endif?>

Для удобства пользователей можно обрабатывать нажатия клавиш ctrl+стрелка влево и ctrl+стрелка вправо. Создадим или откроем для редактирования в директории редактируемого шаблона файл script.js вставить этот код в самый низ:


document.onkeydown = PageNavigation;
function PageNavigation (event)
{
if (!document.getElementById)
return;
if (window.event)
event = window.event;
if (event.ctrlKey)
{
var key = (event.keyCode ? event.keyCode : (event.which ? event.which : null) );
if (!key)
return;
var link = null;
if (key == 39)
link = document.getElementById('next_page');
else if (key == 37)
link = document.getElementById('previous_page');
if (link && link.href)
document.location = link.href;
}
}

Вот и все готово.




Теги: Битрикс

Ссылка на новость:

    html-cсылка на публикацию
    BB-cсылка на публикацию
    Прямая ссылка на публикацию

ЕЩЕ НА ЭТУ ТЕМУ:

Простая ajax подписка на рассылку в один клик

Простая ajax подписка на рассылку в один клик

В этой статье я расскажу как быстро сделать простую ajax подписку на рассылку в один клик
Вывести картинку раздела и подраздела битрикса

Вывести картинку раздела и подраздела битрикса

В этой статье расскажу и покажу как вывести картинку раздела или подраздела категорий. Следовательно картинка берется с товара и становится в раздел.
Выгрузка из 1С и отмена перезаписывания полей в Битриксе

Выгрузка из 1С и отмена перезаписывания полей в Битриксе

Расскажу как сделать чтоб при синхронизации в автоматическом режиме с 1С описание товаров не изменялось на сайте.
Как выгрузить товары только в наличии из Битрикса в Яндекс Маркет

Как выгрузить товары только в наличии из Битрикса в Яндекс Маркет

По умолчанию Битрикс выгружает в YML (Яндекс Маркет) все активированные товары.
Связь способов доставки с платежными системами в компоненте bitrix:sale.order.ajax

Связь способов доставки с платежными системами в компоненте bitrix:sale.order.ajax

Часто требуется сделать так, чтобы в оформлении заказа какие-то платежные системы показывались только для определенных служб доставки. Например, для доставки
Отправка письма на почту через веб-форму для Битрикса

Отправка письма на почту через веб-форму для Битрикса

Этим уроком я расскажу как сделать, чтоб на Битриксе работала отправка письма на почту через веб-форму. Сразу отвечу на резонный вопрос о том что ведь есть в
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.