Разработка на 1С-Битрикс Михаил Базаров
Блог-note

Следующий и предыдущий элемент с картинкой и текстом анонса при просмотре детальной страницы

Просмотров: 700
Задача: при просмотре детальной страницы элемента (новости, статьи, товара каталога - не важно)
нужно показать превью следующего и предыдущего элемента инфоблока
Следующий и предыдущий элемент с картинкой

Реализация с помощью компонента news.line

Чтобы не городить лишний компонент с нуля, просто воспользуемся штатным компонентом news.line. Он уже умеет выводить все нужные данные, нам остается только передать в него ID нужных элементов.

Описываю на примере компонента новостей, но ровно точно так же можно воспроизвести в компоненте каталога.

Открываем на редактирование файл element.php (как раз и отвечает за вывод детального просмотра новости) в шаблоне компонента news и добавляем в него вызов news.line:

$ElementID = $APPLICATION->IncludeComponent(
	'bitrix:news.detail',
	'new_detail',
	Array(
        // Параметры компонента news.detail
	),
	$component
);
$APPLICATION->IncludeComponent(
	"mibazarow:news.line",
	"prev_next",
	[
		"ELEMENT_ID" => $ElementID,
		"IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
		"IBLOCKS" => [
			0 => $arParams["IBLOCK_ID"],
		],
		"NEWS_COUNT" => "2",
		"FIELD_CODE" => [
			0 => "NAME",
			1 => "PREVIEW_TEXT",
			2 => "PREVIEW_PICTURE",
			3 => "",
		],
		"SORT_BY1" => "ACTIVE_FROM",
		"SORT_ORDER1" => "DESC",
		// Остальные настройки news.line
	],
	$component
);

Обратите внимание, это не совсем штатный компонент, а вынесенный в свое пространство имен. Нам нужно модифицировать его работу, чтобы решить задачу.

Самое главное, в параметры этого компонента мы передаем ID текущего элемента из $ElementID, так как для него нужно будет искать соседей

$ElementID также есть в компоненте каталога. Если в вашем шаблоне не доступен, реализуйте через получение $arResult компонента детального просмотра. Подсмотреть как это сделать можно тут, в последнем примере Фильтр на последнем уровне

Свой компонент из штатного

Копируем штатный компонент news.line в свое пространство имен вида /local/components/mibazarow. И закидываем туда компонент из этого архива:
news.line

Все модификации компонента прокомментировал в файле component.php.

Компонент выполняет запросы с использованием LIMIT 1 относительно элемента переданного в $arParams['ELEMENT_ID'] по переданной сортировке из параметров компонента (учитывает только SORT_BY1 и SORT_ORDER1):

  • Получение текущего элемента - извлекаем значение поля сортировки (например, ACTIVE_FROM)
  • При DESC сортировке: ищем элементы с большим значением поля, сортируем по ASC и берем первый
  • При ASC сортировке: ищем элементы с меньшим значением, сортируем по DESC и берем первый
  • При DESC: элементы с меньшим значением поля сортировки
  • При ASC: элементы с большим значением поля сортировки
Услуги

Стоимость разработки на 1С-Битрикс

Стоимость разработки сайта зависит от объёма и сложности проекта. Ниже приведены ориентировочные цены, как правило не выходят за обозначенные рамки. Срок разработки зависит от сложности проекта: как правило называю сроки с запасом.

Финальная стоимость и сроки разработки обговариваются на этапе обсуждения. Скачайте опросник на разработку, заполните как можно подробнее и вышлите удобным способом. После ознакомления смогу задать уточняющие вопросы и оценить проект.

Включено в стоимость разработки

В цену уже заложено всё, что нужно для легального и быстрого запуска. Доплачивать за базовые вещи не придётся.

  • Лицензия и модули

    Лицензия на «1С-Битрикс» нужной редакции, дополнительные модули и видео-инструкции по работе с готовым проектом.

  • Скорость и SEO

    Оптимизация кода и сервера под быструю загрузку, базовая SEO-оптимизация и добавление сайта в поисковые системы.

Блог-note

Заметки по 1С-Битрикс