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

Просмотров: 119

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

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

Реализация с помощью компонента 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С-Битрикс:

Индивидуальная разработка магазина

от 500 000 руб. от 5-ти недель

Разработка магазина на 1С-Битрикс с нуля. Дизайн, сборка и оптимизация производительности под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Запуск сайта на готовом решении

от 150 000 руб. от 7-ми дней

Вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Магазин, быстро запускается на базе одного из 200-та готовых решений.

Мобильное приложение

от 400 000 руб. от 5-ти недель

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 300 000 руб. от 2-х недель

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

Инфоресурс

от 300 000 руб. от 4-х недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

3D‑моделирование, визуализация

от 25 000 руб. от 3-х дней

По вашим фото, чертежам или описанию создадим 3D‑модели и отрендерим набор изображений для каталога товаров: общий вид, крупные планы и технические ракурсы или 360°‑обзор товара.