Вывести товары из того же раздела в карточке товара

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

Немножко топорный, но все же вполне действенный способ по выводу внутри подробной карточки товара, элементов того же раздела в котором находится сам товар. Может пригодиться для показа блоков "Похожие товары" или "Товары этого бренда", чисто в рекламных целях.

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

  • При создании магазина одежды вывести в карточке блок "Другие юбки (штаны, майки и.т.д)"
  • В магазине бытовой техники вывести товары того же бренда или той же направленности
  • С точки зрения юзабилити и продаж, показать клиентам, пришедшим из поиска сразу в карточку товара, другие товары своего магазина
  • С точки зрения СЕО - это достаточно быстрый способ перелинковать страницы товаров

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

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

Выводим в любом месте сайта компонент "Элементы раздела", полностью его настраиваем, верстаем или применяем нужный шаблон и настраиваем на вывод товаров любого раздела нашего каталога. К тому же не забываем настроить ЧПУ таким же образом, как это сделано в основном каталоге.

Далее забираем весь вывод компонента с помощью просмотра исходного кода:

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


/bitrix/templates/ШАБЛОН_САЙТА/components/bitrix/catalog/ШАБЛОН_КАТАЛОГА/element.php

И вставляем скопированный код компонента "Элементы раздела" в самый низ этого файла. После этого все заработает. Убедитесь пройдя в карточку любого товара. Единственное что нам осталось - передать символьный код текущего для товара раздела в этот компонент. Иначе во всех товарах будет одно и тоже.

Можно скопировать catalog.section прямо из комплекcного шаблона, из файла section.php тогда не придется настраивать вывод в ручную, все настройки вывода (инфоблок, внешний вид, цены итд) подтянутся из настроек каталога.

Находим две строчки:


"SECTION_ID" => "",
"SECTION_CODE" => "",

В них то и передаем либо ID либо CODE текущего раздела

//передаст символьный код
"SECTION_ID" => "",
"SECTION_CODE" => $arResult["VARIABLES"]["SECTION_CODE"],
//передаст ID 
"SECTION_ID" => "$arResult["VARIABLES"]["SECTION_ID"]", "SECTION_CODE" => "",

Используйте что-то одно, второй должен остаться пустым. В зависимости от того что используется в настройках ЧПУ вашего каталога.

mtsub 13.11.2017
а в разделах - как обычно catalog должен остаться
Михаил Базаров 14.11.2017
Цитата
mtsub написал:
Цитата
Михаил Базаров  пишет:
Цитата
mtsub написал:
как сделать адреса разделов: site.ru/catalog/#SECTION_CODE#/
а карточек товаров: site.ru/product/#ELEMENT_CODE#/ - без "catalog"
Просто в ЧПУ так и вставить, нужные url и в настройках инфоблока не забыть сделать так же
уточнение в карточке вместо catalog нужен product - просто в настройках это не решается, попробуйте сами.
Вам надо создать его физически
В /catalog/ вывод не всего компонента catalog а только catalog.section (главное правилььно на строить)
А вот в /element/ можно весь catalog
Но, важно: что бы не было дубликатов страниц (для поисковиков) в section.php каталога лучше все удалить или сделать редирект в раздел /catalog/

PS: Пояснил достаточно кратко, там много нюансов в плане СЕО- при таком подходе. Делайте внимательно и вдумчиво
s.rudko@100systems.com Rudko 02.04.2021
Здравствуйте. Первое, что хочу написать, спасибо вам за то, что вы делаете - это очень круто.

Мне нужно помощь с выводом товара в карточке товара того же раздела.
Добавил в component_epilog.php нужный компонент, в строке SECTION_CODE прописал, но все равно выводится весь товар.
Код
 "SECTION_CODE" => $arResult["VARIABLES"]["SECTION_CODE"],
Н
Михаил Базаров 03.04.2021
Цитата
s.rudko@100systems.com Rudko пишет:
Здравствуйте. Первое, что хочу написать, спасибо вам за то, что вы делаете - это очень круто.

Мне нужно помощь с выводом товара в карточке товара того же раздела.
Добавил в component_epilog.php нужный компонент, в строке SECTION_CODE прописал, но все равно выводится весь товар. [CODE]  "SECTION_CODE" => $arResult["VARIABLES"]["SECTION_CODE"],
Н
[/CODE]
В component_epilig Этот параметр не передается, попробуйте

$arResult["SECTION_CODE"]
s.rudko@100systems.com Rudko 08.04.2021
Проделал то, что вы написали.
Я в программировании полный профан. Поэтому ничего и не выходит.
Я не могу понять, если в component_epilog.php не передается этот параметр
Цитата
"SECTION_CODE" => $arResult["VARIABLES"]["SECTION_CODE"],
то куда или откуда он передается?)
Если у вас будет возможность помочь, то я был бы очень благодарен.
Скрытый текст
Михаил Базаров 10.04.2021
Этот параметр есть в element.php который выводит подробную карточку товара

Просто, скопируйте в самый низ, под вывод карточки, компонент вывода раздела из section.php
В него и передайте
"SECTION_ID" => $arResult["VARIABLES"]["SECTION_ID"],

Позже дополню заметку этим способом. Он даже, как то более логичнее и правильнее- чем через component_epilog
Во всяком случае, более управляемый прямо из настроек компонента.
s.rudko@100systems.com Rudko 15.04.2021
Цитата
Этот параметр есть в element.php который выводит подробную карточку товара

Просто, скопируйте в самый низ, под вывод карточки, компонент вывода раздела из section.php
В него и передайте
"SECTION_ID" => $arResult["VARIABLES"]["SECTION_ID"],

Позже дополню заметку этим способом. Он даже, как то более логичнее и правильнее- чем через component_epilog
Во всяком случае, более управляемый прямо из настроек компонента.
Все получилось, спасибо большое.
Василий 19.05.2023
А как реализовать подобный вывод, только еще чтобы по свойству товары были похоже? Заранее благодарю  
Игорь 04.09.2023
Код рабочий, все получилось, товар из того же раздела выводит корректно. НО! При добавлении блока "товаров из того же раздела" меняется заголовок h1 и Title браузера, он становиться равным разделу, в котором находится товар. Как исправить, что бы выводились товары из того же раздела, но название товара отображалось верное
Михаил Базаров 04.09.2023
Цитата
Игорь написал:
Код рабочий, все получилось, товар из того же раздела выводит корректно. НО! При добавлении блока "товаров из того же раздела" меняется заголовок h1 и Title браузера, он становиться равным разделу, в котором находится товар. Как исправить, что бы выводились товары из того же раздела, но название товара отображалось верное
В параметрах этого компонента передайте
Код
"ADD_SECTIONS_CHAIN" => "N", // не добавлять в цепочку
"SET_TITLE" => 'N', // не ставить заголовок
"BROWSER_TITLE" => 'N', // не ставить заголовок браузера