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

Как вытянуть ID из $arItem в result_modifier?

00 голосов
2
Доброе время суток.


Прошу помощи, ибо сам уже отчаялся найти решение.

В result_modifier я добавляю поле бренда к основному массиву arItem через CCatalogProduct::GetByIDEx().
$arItem[ID] содержит ID товара, в шаблоне его можно получить с помощью print_r($arItem[ID]); а в result_modifier он почему-то не берется...

Причем, если вручную указать  CCatalogProduct::GetByIDEx(12345); то код срабатывает.

Приведу код result_modifier, он стандартный от компонента news.list не считая добавления последней конструкции.

Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
foreach ($arResult["ITEMS"] as $key => $arItem)
{
   $res = CIBlockSection::GetList(array(), array("ID" => $arItem['IBLOCK_SECTION_ID']), false, array("SECTION_PAGE_URL", "NAME"));
   if($ar_res = $res->GetNext())
      $arResult["ITEMS"][$key]["SECTION_URL"] = '<a href="'.$ar_res["SECTION_PAGE_URL"] .'">'.$ar_res["NAME"].'</a>';

   if(is_array($arItem["PREVIEW_PICTURE"]))
   {
      $arFileTmp = CFile::ResizeImageGet(
         $arItem["PREVIEW_PICTURE"],
         array("width" => $arParams["DISPLAY_IMG_WIDTH"], "height" => $arParams["DISPLAY_IMG_HEIGHT"]),
         BX_RESIZE_IMAGE_PROPORTIONAL,
         true
      );

      $arResult["ITEMS"][$key]["PREVIEW_IMG_SMALL"] = array(
         "SRC" => $arFileTmp["src"],
         "WIDTH" => $arFileTmp["width"],
         "HEIGHT" => $arFileTmp["height"],
      );
   }
}
//attaching field brand

      $arBrandTmp = Array();
      if(CModule::IncludeModule("catalog")):
         $ItemID = $arItem[ID];
         $arBrandTmp = CCatalogProduct::GetByIDEx($ItemID);
      endif;

      $arResult["ITEMS"][$key]["BRAND"] = array(
         "VALUE" => $arBrandTmp[PROPERTIES][CML2_BRAND][VALUE],
      );



?>




Спасибо.
спросил 01 Май, 14 от CoolDante (100 баллов)

2 Ответы

00 голосов
Цитата
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
foreach ($arResult["ITEMS"] as $key => $arItem)
{
   $res = CIBlockSection::GetList(array(), array("ID" => $arItem['IBLOCK_SECTION_ID']), false, array("SECTION_PAGE_URL", "NAME"));
   if($ar_res = $res->GetNext())
      $arResult["ITEMS"][$key]["SECTION_URL"] = '[url='.$ar_res[]'.$ar_res["NAME"].'[/url]';

   if(is_array($arItem["PREVIEW_PICTURE"]))
   {
      $arFileTmp = CFile::ResizeImageGet(
         $arItem["PREVIEW_PICTURE"],
         array("width" => $arParams["DISPLAY_IMG_WIDTH"], "height" => $arParams["DISPLAY_IMG_HEIGHT"]),
         BX_RESIZE_IMAGE_PROPORTIONAL,
         true
      );

      $arResult["ITEMS"][$key]["PREVIEW_IMG_SMALL"] = array(
         "SRC" => $arFileTmp["src"],
         "WIDTH" => $arFileTmp["width"],
         "HEIGHT" => $arFileTmp["height"],
      );
if(CModule::IncludeModule("catalog")){
$arResult["ITEMS"][$key]["BRAND"] = CCatalogProduct::GetByIDEx($arItem["ID"]);
}
   }
}

Вроде как-то так
ответил 23 Дек, 14 от KILLERI (380 баллов)
00 голосов
Вы же получаете  $ItemID = $arItem[ID] уже за пределами цикла foreach.
Поместите эту конструцию внутрь цикла 

Код
//attaching field brand

$arBrandTmp = Array();
      if(CModule::IncludeModule("catalog")):
         $ItemID = $arItem[ID];
         $arBrandTmp = CCatalogProduct::GetByIDEx($ItemID);
      endif;

      $arResult["ITEMS"][$key]["BRAND"] = array(
         "VALUE" => $arBrandTmp[PROPERTIES][CML2_BRAND][VALUE],
      );





?>
ответил 13 Апр, 15 от Neroby (380 баллов)

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

0 голосов
1 ответ
0 голосов
2 ответов
спросил 13 Фев, 14 от borodaz (160 баллов)
0 голосов
1 ответ
0 голосов
0 ответов