Битрикс как сделать ссылку на следующую и предыдущую новость

В данной статье речь пойдет о том, как узнать динамические ссылки на следующую новость и предыдущую. Как вы поняли, мы будем работать на детальной странице компонента.

Как узнать ссылку на следующий или предыдущий элемент в 1С-Битрикс

Рассмотрим на примере компонента новостей — включите визуальный редактор и наведите на вашу новость на детальной странице и выберите пункт «Редактировать шаблон компонента». Лично я предпочитаю потом заходить в админку, копировать путь к файлу и работать непосредственно через FTP, а вы делайте как вам удобней, но наша цель добраться до самого конца кода.

После этого, замените в коде ниже ID вашего инфоблока (мой 45) — IBLOCK_ID:

Если вы все сделали правильно, то под новостью появятся ссылки на соседние материалы.


Важно! $ElementID = $arResult[‘ID’]; — в некоторых старых компонентах это не нужно писать, т.к. переменная $ElementID приравнивается к вызову компонента и таким образом мы получаем ID нашего элемента:

Давайте теперь не просто напишем следующая, а выведем имена этих новостей. Для этого добавим в наш массив выбранных параметров, а именно $arSelect — такой параметр как NAME:

И наш полный код будет выглядеть следующим образом:

Пишите ваши комментарии или предложения о том, как можно улучшить данный код. Я не тестировал его с большим количеством рубрик, поэтому в кое-каких случаях могут быть неточности.

UPDATE: вариант, который предложил наш читатель 🙂

 

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.com/dmitriy/.

Какие услуги предоставляю:
- Создание сайтов, шаблонов и компонентов на 1С-Битрикс;
- Разработка функционала с нуля и доработка кода на уже созданных проектах;
- Адаптивная вёрстка макетов и натяжка на Битрикс;
- Парсинг файлов и выгрузка на сайт (форматы - CSV, XML, XLSX, JSON)
- Интеграции со сторонними сервисами по API;
- Многоязычные версии и многое другое.

Если у вас остались вопросы, свяжитесь со мной любым удобным для вас способом или оставьте комментарий внизу.
E-mail: dmitriyribka@gmail.com
Skype: cinemacreaterus

5 комментария

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

  1. Нет никаких причин хардкодить айдишник инфоблока. Он у вас уже есть в шаблоне: $arResult[«IBLOCK_ID»]

  2. Вообще, на самом деле, GetList c параметром «nElementID» выводит отдает не один элемент, а три (предыдущий, текущий и следующий). И нет смысла писать целых два гетлиста для решения этой задачи.
    У меня получилось что-то такое: https://gist.github.com/geff21st/7f95dff3e259fd547e77e94680751b4f
    Самое сложное — это проверить граничные состояния (когда нет предыдущего, когда нет следующего). Я реализовал эту проверку через текущий элемент. Там в коде для сортировки используются параметры «sort_by1», «sort_order1». Они не предусмотрены у компонента детальной новости, но их можно определить. Либо можно их значения захардкодить.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *