Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Страница с результатами поиска + возможность купить товар

00 голосов
5
Здравствуйте!
Суть:
Компонент bitrix:search.page ноходит товары из торгового каталога. Хотелось бы, чтобы на странице с результатами поиска с каждым товаром выводилась цена из инфоблока с торговым предложением и кнопка "В корзину". Видимо, знаний у меня недостаточно, а делать  нужно. Если кто-то готов помочь, напишите тут решение. Или в личные сообщения. В долгу не останусь [IMG]
спросил 04 Ноя, 13 от Molders (140 баллов)

5 Ответы

00 голосов
Да, столкнулся с такой же задачей. Буду признателен за помощь и советы!
ответил 09 Дек, 13 от Tsugaru (100 баллов)
00 голосов
Одно из решений:
В шаблоне компонента search.page вставить компонент, отвечающий за вывод товаров на сайте (catalog.section), передав в качестве фильтра ID   товаров, найденных компонентом поиска. При этом в настройках компонента  search.page нужно указать область поиска - только по каталогу, чтобы в список товаров не попадали ID статей и т.п.
ответил 23 Март, 14 от PsiKira (160 баллов)
00 голосов
Иван Турченко, можно подробнее решение расписать,если не трудно?
ответил 15 Июль, 14 от Molders (140 баллов)
00 голосов
Добрый день! Передо мной точно такая же задача встала, поэтому если есть возможность напишите по подробнее решение. Спасибо!
ответил 15 Ноя, 14 от xADAMx (100 баллов)
00 голосов
Для начала создаём свой шаблон для страницы поиска. Для этого заходим на страницу, включаем режим правки и наводим на область с результатами поиска. Копируете шаблон компонента: 
1. http://clip2net.com/s/1nDkk
2. http://clip2net.com/s/1nDmx
Не забываем установить область поиска у компонента поиска:
1. http://clip2net.com/s/1nDnz
2. http://clip2net.com/s/1nDo0
Далее переходим к редактированию файла template.php в созданном шаблоне для страницы поиска (находится примерно по адресу /public_html/bitrix/templates/abc/components/bitrix/search.page/suggest/) любым удобным вам способом - можете через файловый менеджер битрикса, можете открыть файл через FTP менеджер и т.д.
Находим в этом файле строчку типа: 
Код
 ?elseif(count($arResult["SEARCH"])>0):?>


После неё пишем такой код:

Код
$pr_id = array();
   foreach($arResult["SEARCH"] as $arItem):
   $pr_id[] = $arItem['ITEM_ID']; // записываем найденные товары в массив
   endforeach;
 
Далее вставляем такой код:

Код
global $arFil;
$arFil = array("ID"=>$pr_id);
Далее вставляете ваш компонент, который отвечает за вывод товаров на сайте и в поле   FILTER_NAME пишем arFil

Код
 if(count($pr_id)>0):   
$APPLICATION->IncludeComponent(
   "bitrix:catalog.section",
   "search_list",
   Array(
      "AJAX_MODE" => "N",
      "IBLOCK_TYPE" => "1c_catalog",
      "IBLOCK_ID" => 1,
      "SECTION_ID" => "",
      "SECTION_CODE" => "",
      "SECTION_USER_FIELDS" => array(),
      "ELEMENT_SORT_FIELD" => "id",
      "ELEMENT_SORT_ORDER" => "desc",
      "FILTER_NAME" => "arFil",
      "INCLUDE_SUBSECTIONS" => "Y",
      "SHOW_ALL_WO_SECTION" => "Y",
      "SECTION_URL" => "",
      "DETAIL_URL" => "",
      "BASKET_URL" => "/personal/basket.php",
      "ACTION_VARIABLE" => "action",
      "PRODUCT_ID_VARIABLE" => "id",
      "PRODUCT_QUANTITY_VARIABLE" => "quantity",
      "PRODUCT_PROPS_VARIABLE" => "prop",
      "SECTION_ID_VARIABLE" => "SECTION_ID",
      "META_KEYWORDS" => "-",
      "META_DESCRIPTION" => "-",
      "BROWSER_TITLE" => "-",
      "ADD_SECTIONS_CHAIN" => "N",
      "DISPLAY_COMPARE" => "N",
      "SET_TITLE" => "N",
      "SET_STATUS_404" => "N",
      "PAGE_ELEMENT_COUNT" => "50",
      "LINE_ELEMENT_COUNT" => "3",
      "PROPERTY_CODE" => array(),
      "PRICE_CODE" => array("Типовое розничное по розничной цене"),
      "USE_PRICE_COUNT" => "N",
      "SHOW_PRICE_COUNT" => "1",
      "PRICE_VAT_INCLUDE" => "Y",
      "PRODUCT_PROPERTIES" => array(),
      "USE_PRODUCT_QUANTITY" => "N",
      "CACHE_TYPE" => "A",
      "CACHE_TIME" => "36000000",
      "CACHE_FILTER" => "N",
      "CACHE_GROUPS" => "Y",
      "DISPLAY_TOP_PAGER" => "N",
      "DISPLAY_BOTTOM_PAGER" => "N",
      "PAGER_TITLE" => "Товары",
      "PAGER_SHOW_ALWAYS" => "N",
      "PAGER_TEMPLATE" => "",
      "PAGER_DESC_NUMBERING" => "N",
      "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
      "PAGER_SHOW_ALL" => "N",
      "AJAX_OPTION_SHADOW" => "N",
      "AJAX_OPTION_JUMP" => "N",
      "AJAX_OPTION_STYLE" => "N",
      "AJAX_OPTION_HISTORY" => "N",
      "SEARCH_IDS" => $pr_id,   // Учитывать права доступа
   )
);
endif;
ответил 13 Март, 15 от PsiKira (160 баллов)

Похожие вопросы

0 голосов
3 ответов
спросил 23 Март, 14 от kinst (160 баллов)
0 голосов
3 ответов
спросил 01 Март, 14 от SAdos (160 баллов)
0 голосов
7 ответов
спросил 17 Авг, 13 от guk (360 баллов)
0 голосов
1 ответ