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

Битрикс и Web 2.0

00 голосов
9
спросил 26 Май, 13 от dfgwdfs (260 баллов)

9 Ответы

00 голосов
ответил 26 Май, 13 от Lekar (2,220 баллов)
00 голосов
Цитата
Рамиль Юналиев пишет:
$arItem дает вам ID найденного элемента, а этого достаточно чтобы вывести в поиске любую информацию


Спасибо , пойду курить мануал по $arItem :)
ответил 28 Май, 13 от dfgwdfs (260 баллов)
00 голосов
ответил 24 Авг, 13 от Lekar (2,220 баллов)
00 голосов
Эх , не получается :( Пробовал кастомизированный компонент вывода детальной информации об элементе в цикле крутануть. :oops: Ему нужны
"IBLOCK_TYPE"
"IBLOCK_ID"
"ELEMENT_ID"
"SECTION_ID"

Что делать ?
ответил 22 Ноя, 13 от dfgwdfs (260 баллов)
00 голосов
ответил 03 Март, 14 от GODDNEESS (500 баллов)
00 голосов
Цитата
Рамиль Юналиев пишет:
вот он [ITEM_ID] => Код проиндексированного элемента

Спасибо! :)
Цитата
Андрей Пилюгин пишет:
http://www.1c-bitrix.ru/help_html/source/iblock/help/ru/developer/functions/getiblockelement.php.html


Спасибо! :)

Вот что получилось.

Код
<?$grab = GetIBlockElement($arItem["ITEM_ID"]);
$img = CFile::ShowImage($grab["PREVIEW_PICTURE"], 151, 111, "border=1", "", true);
echo $img;?>


Теперь поиск смотрится намного солиднее. То что нужно , теперь буду делать облако на 250 тэгов 8)
ответил 23 Июнь, 14 от dfgwdfs (260 баллов)
00 голосов
GetIBlockElement не самый эффективный метод.
Производителнее будет:
Код
$grab = CIBlockElement::GetList(
  array(), //запрос без order by
  array(
    "ID" => $arItem["ITEM_ID"],
  ), // будет использован уникальный индекс
  false, //без группировки group by
  false, //без параметров постраничной навигации
  array(
    "ID",
    "IBLOCK_ID,
    "PREVIEW_PICTURE",
  ) //выборка только необходимых полей (IBLOCK_ID может пригодиться в некоторых особых случаях)
);


А еще лучше в цикле собрать массив для "ID", сделать ОДИН вызов GetList и разложить результат по массиву $arResult.
И выполнить все это в файле result_modifier.php
Код
<?
  $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"]);
?>


А в шаблоне:
Код
<?if(is_array($arItem["PICTURE"])):?>
   <img class="preview_picture" border="0" src="<?=$arItem["PICTURE"]["SRC"]?>" width="<?=$arItem["PICTURE"]["WIDTH"]?>" height="<?=$arItem["PICTURE"]["HEIGHT"]?>" alt="<?=$arItem["PICTURE"]["ALT"]?>">
<?endif?>
ответил 23 Окт, 14 от Miso (740 баллов)
00 голосов
Цитата
Maxim Smirnov пишет:
GetIBlockElement не самый эффективный метод. Производителнее будет:
Код

$grab = CIBlockElement::GetList( array(), //запрос без order by array( "ID" => $arItem["ITEM_ID"], ), // будет использован уникальный индекс false, //без группировки group by false, //без параметров постраничной навигации array( "ID", "IBLOCK_ID, "PREVIEW_PICTURE", ) //выборка только необходимых полей (IBLOCK_ID может пригодиться в некоторых особых случаях) );


Спасибо , воспользуюсь этим решением.
ответил 22 Фев, 15 от dfgwdfs (260 баллов)
00 голосов
Цитата
Maxim Smirnov пишет:
не самый эффективный метод

Новички, как правило, любят GetIBlockElement.
К "гетлисту" приходят немного позже, уже немного освоившись в API.
ответил 01 Июнь, 15 от GODDNEESS (500 баллов)

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

0 голосов
4 ответов
0 голосов
3 ответов
спросил 19 Июнь, 13 от brilliant (160 баллов)
0 голосов
0 ответов
0 голосов
3 ответов
0 голосов
4 ответов
спросил 17 Сен, 13 от davydov (120 баллов)