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

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

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

Показать еще