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

Вывод значения произвольного поля элемента инфоблока в результаты поиска

00 голосов
5
Здравствуйте. Возникла необходимость модифицировать вывод результатов поиска на сайте.
Нашел на форуме код который позволяет добавлять к выводу изображение элемента.
Вставляется в файл result_modifier.php
<?
if($arResult["SEARCH"]){
$arID = array();
foreach($arResult["SEARCH"] as $i => $arItem)
{
if($arItem["MODULE_ID"] == "iblock" && substr($arItem["ITEM_ID"], 0, 1) !== "S")
$arID[$arItem["ITEM_ID"]] = $i;
}
$grab = CIBlockElement::GetList(array(),array("ID" =>
array_keys($arID)),false,false,array("ID","IBLOCK_ID","PREVIEW_PICTURE")); while($ar = $grab->Fetch()){
$arResult["SEARCH"][$arID[$ar["ID"]]]["PICTURE"] = CFile::GetFileArray($ar["PREVIEW_PICTURE"]);
} } ?>


и затем в шаблоне <?=arItem["PICTURE"]["src"];?>


Подскажите, как модифицировать этот код, чтоб можно было выводить произвольное поле элемента инфоблока в результатах поиска.
спросил 26 Апр, 13 от Stylus (220 баллов)

5 Ответы

00 голосов
Вам нужно выводить свойство инфоблока?
http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/getlist.php
В последнем параметре добавьте
Цитата
PROPERTY_<PROPERTY_CODE>, где PROPERTY_CODE - ID или мнемонический код.
или PROPERTY_* - для всех свойств.
ответил 26 Апр, 13 от NitroGeN (2,840 баллов)
00 голосов
Неужели никому не приходилось сталкиваться с такой задачей?
ответил 26 Апр, 13 от Stylus (220 баллов)
00 голосов
Мне нужно выводить свойство элемента инфоблока. Ну в инфоблоке прописано поле телефона PHONE, в каждом элементе инфоблока это поле заполнено и в результатах поиска нужно чтоб выводились значения из него, для каждого элемента в выдаче поиска.

Т.е. должно быть так:


<?
if($arResult["SEARCH"]){
$arID = array();
foreach($arResult["SEARCH"] as $i => $arItem)
{
if($arItem["MODULE_ID"] == "iblock" && substr($arItem["ITEM_ID"], 0, 1) !== "S")
$arID[$arItem["ITEM_ID"]] = $i;
}
$grab = CIBlockElement::GetList(array(),array("ID" =>
array_keys($arID)),false,false,array("ID","IBLOCK_ID","PROPERTY_PHONE"));

А дальше? как вот этот код преобразовать?

while($ar = $grab->Fetch()){
$arResult["SEARCH"][$arID[$ar["ID"]]]["PICTURE"] = CFile::GetFileArray($ar["PREVIEW_PICTURE"]);
} } ?>


чтоб потом в шаблоне вывести вот таким образом <?=$arItem["PROPERTY"]["PHONE"]["VALUE"];?>
ну или каким-то другим кодом...
ответил 22 Июнь, 13 от Stylus (220 баллов)
00 голосов
Код
while($ar = $grab->Fetch()){
$arResult["SEARCH"][$arID[$ar["ID"]]]["PHONE"]["VALUE"]=$ar["PROPERTY_PHONE_VALUE"];
}
ответил 26 Сен, 13 от NitroGeN (2,840 баллов)
00 голосов
Спасибо что пытаетесь помочь, но вот что-то у меня не выходит ничего...

в файл result_modifier.php вставил следующий код:


<?
if($arResult["SEARCH"]){
$arID = array();
foreach($arResult["SEARCH"] as $i => $arItem)
{
if($arItem["MODULE_ID"] == "iblock" && substr($arItem["ITEM_ID"], 0, 1) !== "S")
$arID[$arItem["ITEM_ID"]] = $i;
}
$grab = CIBlockElement::GetList(array(),array("ID" =>
array_keys($arID)),false,false,array("ID","IBLOCK_ID","PROPERTY_PHONE")); while($ar = $grab->Fetch()){
$arResult["SEARCH"][$arID[$ar["ID"]]]["PHONE"]["VALUE"] = $ar["PROPERTY_PHONE_VALUE"];
} } ?>

В шаблон страницы поиска вставил:

<?=$arItem["PROPERTY"]["PHONE"]["VALUE"];?>

Но в результаты поиска свойство PHONE так и не выводится.
Где ошибка? Вроде все должно быть просто, но для начинающего задача кажется очень сложной :)
ответил 27 Дек, 13 от Stylus (220 баллов)

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

0 голосов
3 ответов
0 голосов
5 ответов
спросил 29 Ноя, 13 от AKCEJlb (140 баллов)
0 голосов
3 ответов
спросил 09 Июнь, 13 от DRUl (180 баллов)
0 голосов
5 ответов
0 голосов
4 ответов
спросил 07 Фев, 14 от Mushu (640 баллов)