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

Вывести товары из того же раздела в карточке товара
Просмотров: 8151 | Комментариев: 13

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

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

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

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

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

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

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

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

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

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

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

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

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

//передаст ID
"SECTION_ID" => "$arResult["VARIABLES"]["SECTION_ID"]",
"SECTION_CODE" => "",

Используйте что-то одно, второй должен остаться пустым. Само собой, если у ваших разделов нет SECTION_CODE, то использовать можно только SECTION_ID

Гость сайта
А можешь подсказать как допилить чтоб не показывался тот товар на котором находишься?
Иван
Спасибо тебе большое, помог решить проблему. Сколько берешь за услуги интеграции с Битрикс уже сверстанного дизайна? Скоро может понадобиться.
Михаил Базаров
Цитата
Гость сайта пишет:
А можешь подсказать как допилить чтоб не показывался тот товар на котором находишься?
Перед выводом товаров поставить

Код
$GLOBALS['NotItItem'] = array('!ID' =>  $arResult["VARIABLES"]["ELEMENT_ID"]); 

В самом catalog.section добавить этот фильтр

Код
"FILTER_NAME" => "NotItItem", 
Александр Силуянов
Михаил, это работает только в каталоге.
Подскажите как реализовать на редакции Стандарт в компоненте news.list?
Заранее благодарен.
Алексей Сель
Михаил, скажите пожалуйста, этот метод еще актуален? Никак не могу передать ни id ни символьный код, в результате товары у меня не выводятся.
Михаил Базаров
Цитата
Алексей Сель написал:
Михаил, скажите пожалуйста, этот метод еще актуален? Никак не могу передать ни id ни символьный код, в результате товары у меня не выводятся.
Да, актуален. Ищите ошибку у себя. Буквально дня три назад делал на самой свежей версии Битрикс. Да и в принципе, в этом плане не могло что-то измениться
mtsub
как сделать адреса разделов: site.ru/catalog/#SECTION_CODE#/
а карточек товаров: site.ru/product/#ELEMENT_CODE#/ - без "catalog"
mtsub
у меня товары не выводятся - 404 ошибка, переиндексацию делать. кеш сбрасывал.
Antik
Цитата
mtsub написал:
у меня товары не выводятся - 404 ошибка, переиндексацию делать. кеш сбрасывал.
у вас директории такой нет, catalog это физическая директория комплексного компонента, а не просто виртуальный путь
Михаил Базаров
Цитата
mtsub написал:
как сделать адреса разделов: site.ru/catalog/#SECTION_CODE#/
а карточек товаров: site.ru/product/#ELEMENT_CODE#/ - без "catalog"
Просто в ЧПУ так и вставить, нужные url и в настройках инфоблока не забыть сделать так же
mtsub
Цитата
Михаил Базаров пишет:
Цитата
mtsub написал:
как сделать адреса разделов: site.ru/catalog/#SECTION_CODE#/
а карточек товаров: site.ru/product/#ELEMENT_CODE#/ - без "catalog"
Просто в ЧПУ так и вставить, нужные url и в настройках инфоблока не забыть сделать так же
уточнение в карточке вместо catalog нужен product - просто в настройках это не решается, попробуйте сами.
mtsub
а в разделах - как обычно catalog должен остаться
Михаил Базаров
Цитата
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: Пояснил достаточно кратко, там много нюансов в плане СЕО- при таком подходе. Делайте внимательно и вдумчиво