Компонент для Битрикс. Ссылки «Следующий товар» и «Предыдущий товар». Обновлено!

Кнопка

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

Что делает данный компонент.

Допустим у нас следующая структура каталога:

- категория 1
- категория 2
   - подкатегория 1
    - товар 1
    - товар 2
  - подкатегория 2
    - товар 3
    - товар 4
    - товар 5
  - подкатегория 3
    - товар 6
- категория 3

На странице товара 4, будут ссылки на 3 и 5 товар. На странице товара 5 будут ссылки на 4 и 6, а на странице 3го товара – на 2ой и 4ый товар.

Компонент можно добавлять через визуальный редактор, там же можно изменять входные данные(параметры) компонента.

Пример вызова компонента:

<?
$APPLICATION->IncludeComponent("bitrix:next_last_element","",Array(
		"ELEMENT_ID" =>  $arResult["ID"],
		"NEXT_NAME" => "Следующий товар",
		"LAST_NAME" => "Предыдущий товар",
		"CACHE_TYPE" => "Y",
		"CACHE_TIME" => "3600000",
		"CACHE_GROUPS" => "Y"
	)
);
?>

Описание ключей:

ELEMENT_ID — ID текущего элемента
NEXT_NAME — Имя кнопки для перехода к следующему элементу
LAST_NAME — Имя кнопки для перехода к предыдущему элементу

Для того, чтобы компонент появился у вас на сайте, папку с компонентом необходимо закинуть по адресу «/bitrix/components/bitrix/». После этого у вас должны появиться ссылки такого вида:

Компонент для Битрикс

Внешний вид ссылок вы можете настроить сами в файле-шаблоне данного компонента (template.php).

Сам компонент вы можете скачать тут.

По всем вопросам пишите либо в комментарии, либо используя эти данные.

Похожие посты:
  • Компонент для Битрикс. Архив новостей (статей).
  • Компонент для Битрикс. Счетчик онлайн посетителей.
  • Сравнение редакций Битрикс
  • Про $arResult и $arParams (Битрикс)
  • События в 1С Битрикс
  • 11 комментариев: Компонент для Битрикс. Ссылки «Следующий товар» и «Предыдущий товар». Обновлено!

    1. Алексей Валеев

      Реализована очень нужная и полезная возможность, но позволю себе немного покритиковать подход:
      1. Делать полную выборку элементов, хоть и с ограничением по секции, нерационально с точки зрения производительности
      2. Выборки находятся вне кешируемого блока (хотя если подключать компонент из шаблона другого компонента, то все закешируется, но все равно не очень красиво:)
      Почитайте про параметр nElementID в методе GetList http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/getlist.php

      • Лаврушин Алексей

        Спасибо, не знал. Мало у меня опыта в этом еще :-) . Компонент переделаю. Тем более, что с использованием того, что вы сказали задача упрощается.

      • Лаврушин Алексей

        Обновил я компонент. Теперь он поддерживает кеширование + выборка делается с использованием параметра nElementID. Вообще я переделал весь алгоритм работы компонента. Функцию он выполняет такую же, что и раньше. Очень интересно будет увидеть ваше мнение.

        • Алексей Валеев

          Предлагаю пообщаться по e-mail. Пишите на адрес, которым я подписываюсь при комментировании.

    2. Виталий

      Странно, вы создаете компонент как системный, что в документации битрикса делать не рекомендуют. при размещении компонента скажем через визуальный редактор на странице каталога после компонента Каталог, в вышеописанный компонент не передается параметр текущего активного элемента. В результате компонент создает ссылки на тот же товар, что и активен…
      этот компонент у кого-то работает? и если да, подскажите пожалуйста, куда вы вставили $APPLICATION->IncludeComponent(«bitrix:next_last_element»…. чтобы все заработало.

    3. Большое спасибо за вашу работу! Добавил в коллекцию скриптов))

    4. Андрей

      Спасибо! Отлично работает!

    5. Андрей

      Поскольку я использовал ваш компонент, хочу поделиться своей доработкой его под свой сайт.
      Выяснилось, что когда элемент привязан к нескольким разделам – то соседи выбираются из самого первого. Решил при помощи параметра SECTION_ID, в который передаётся ID раздела при вызове. Этот параметр используется в фильтре CIBlockElement::GetList.
      GetList теперь стал выдавать «правильных» соседей, НО уже соседи содержали «неправильные» URL-ы разделов, то есть уже через соседа попадаем в другой раздел.
      Решил эту проблему как проще было для меня и тут возможны, очевидно другие варианты. Ввёл ещё один параметр SECTION_URL по аналогии с SECTION_ID, а при формировании ссылок использовал сложение этого URL-а и CODE элемента, который получается из GetList вместо DETAIL_PAGE_URL.
      Если нужен рабочий архив, с удовольствием поделюсь.

    6. Пирожков

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

    7. Светлана

      Здравствуйте. Вставляю компонент, сайт выдает ошибку, что компонент не найден

    Добавить комментарий для Светлана
    Отменить ответ

    Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: