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

MORE_PHOTO для news.detail

00 голосов
5
в модуле catalog картинки MORE_PHOTO выводится так

Код
  <?
        if(count($arResult["MORE_PHOTO"])>0):?>
        <?foreach($arResult["MORE_PHOTO"] as $PHOTO):?>
            <img border="0" src="<?=$PHOTO["SRC"]?>" width="<?=$PHOTO["WIDTH"]?>" height="<?=$PHOTO["HEIGHT"]?>" alt="<?=$arResult["NAME"]?>" title="<?=$arResult["NAME"]?>" /><br />
        <?endforeach?>
    <?endif?>


но в news.detail код не работает. не подскажете, как его нужно подправить для news.
спасибо!
спросил 10 Ноя, 13 от Exet (380 баллов)

5 Ответы

00 голосов
В компоненте news.detail нет обработки MORE_PHOTO.
Можно в шаблоне добавить result_modifier.php и взять нужный код из catalog.element
Код
   $arResult["MORE_PHOTO"] = array();
   if(isset($arResult["PROPERTIES"]["MORE_PHOTO"]["VALUE"]) && is_array($arResult["PROPERTIES"]["MORE_PHOTO"]["VALUE"]))
   {
      foreach($arResult["PROPERTIES"]["MORE_PHOTO"]["VALUE"] as $FILE)
      {
         $FILE = CFile::GetFileArray($FILE);
         if(is_array($FILE))
            $arResult["MORE_PHOTO"][]=$FILE;
      }
   }
ответил 21 Дек, 13 от smileplz (8,020 баллов)
00 голосов
спасибо!!
ответил 06 Апр, 14 от Exet (380 баллов)
00 голосов
Уже несколько часов вожусь с проблемой.

Есть в инфоблоке множественное доп. свойство MORE_PHOTO типа "Файл" для вывода доп. картинок к news.detail. Она мне выводит вместо самих картинок ссылки вида "Загрузить" / со ссылкой на картинки. А нужно сразу сами картинки.

Как сделать?
Нужен весь код, а то плохая привычка давать кусочек кода, не говоря, куда его вставить - особенно если он не весь (без <? и т. п.).

Вот кусок из файла template.php из к-та news.detail:
Код
<?foreach($arResult["FIELDS"] as $code=>$value):?>
            <?=GetMessage("IBLOCK_FIELD_".$code)?>: <?=$value;?>
            <br />
    <?endforeach;?>
    <?foreach($arResult["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
        <?=$arProperty["NAME"]?>: 
        <?if(is_array($arProperty["DISPLAY_VALUE"])):?>
        <?=implode(" / ", $arProperty["DISPLAY_VALUE"]);?>

<?else:?>
            <?=$arProperty["DISPLAY_VALUE"];?>
        <?endif?>
        <br />
    <?endforeach;?>


Куда и что вставить? :)
ответил 30 Июль, 14 от Nastygrl (120 баллов)
00 голосов
1 - сделайте var_dump($arResult);
2 - посмотрите, в каком виде у вас хранятся идентификаторы картинок. Это могут быть или их идентификаторы в таблице b_file или уже сформированные подмассивы, описывающие картинку или просто путь к картинке.

Во 2 и 3 случаях - выводите нужный ключ обернув в IMG.

Если у вас только идентификаторы, то нужно будет на api сделать запрос к таблице b_files

Вы чуть выше сначала получаете по ID картинок их свойства, а потом выводите их.

Воспользоваться можно документированной функцией CFile::GetByID или слабодокументированной CFile::GetList и получить сразу весь набор файлов.
ответил 02 Дек, 14 от ledyNEXUS (420 баллов)
00 голосов
Цитата
сделайте var_dump($arResult);


Хм... звучит сложновато. Опять-таки как это сделать (в полном виде)? :)

Цитата
в каком виде у вас хранятся идентификаторы картинок.


Тоже непросто определить сразу. По крайней мере, на страницу выводятся ссылки вида "Загрузить" / "Загрузить" (если 2 фото), со ссылками типа /upload/abc/.../image.jpg (ну в таком роде).

И кстати, может лучше использовать не указанные Вами функции, а CFile::ShowImage (только как)?
ответил 27 Март, 15 от Nastygrl (120 баллов)

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

0 голосов
0 ответов
спросил 14 Март, 14 от GEBRIAL (100 баллов)
0 голосов
2 ответов
спросил 13 Фев, 14 от Blacat (260 баллов)
0 голосов
2 ответов
спросил 20 Янв, 14 от asderte (260 баллов)
0 голосов
5 ответов
спросил 28 Июль, 13 от WaRiC (160 баллов)
0 голосов
3 ответов