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

Дополнительные изображения товара

00 голосов
10
Здравствуйте, на странице товара имеются изображения товара, выводимые следующим образом:
Код
<?
// additional photos
$LINE_ELEMENT_COUNT = 2; // number of elements in a row
if(count($arResult["MORE_PHOTO"])>0):?>
      <a name="more_photo"></a>
<?foreach($arResult["MORE_PHOTO"] as $PHOTO):?>
         <div class="more-photo-image"><a href="<?=$PHOTO["SRC"]?>"><img border="0" src="/thumb/150x100xCUT/<?=$PHOTO["SRC"]?>" alt="<?=$arResult["NAME"]?>" title="<?=$arResult["NAME"]?>" /></a></div>
<?endforeach?>
<?endif?>

Рисунок

Нужно показывать их и в анонсе товара на странице раздела.
На странице раздела есть цикл:
Код
<?foreach($arResult["ITEMS"] as $cell=>$arElement):?>

Однако помещенный внутрь него вышеуказанный код с, соответственно, измененными arResult на arElement не срабатывает.
В чем может быть проблема?
спросил 09 Март, 13 от Targo (240 баллов)

10 Ответы

00 голосов
Ап, дело важное(
ответил 09 Март, 13 от Targo (240 баллов)
00 голосов
Никто не знает?
ответил 17 Март, 13 от Targo (240 баллов)
00 голосов
Что значит "на странице товара", "на странице раздела"?
Речь идёт о шаблонах компонентов, или у вас код прямо в теле страницы?
ответил 21 Апр, 13 от Ly (4,580 баллов)
00 голосов
Цитата
Dmitry Ban пишет:
Речь идёт о шаблонах компонентов, или у вас код прямо в теле страницы?

да, шаблоны компонентов
вот шаблон отдельного товара:
Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<div class="catalog-element">
   <table width="100%" border="0" cellspacing="0" cellpadding="2">

   </table>
      
   <?if($arResult["DETAIL_TEXT"]):?>
      <br /><?=$arResult["DETAIL_TEXT"]?><br />
   <?elseif($arResult["PREVIEW_TEXT"]):?>
      <br /><?=$arResult["PREVIEW_TEXT"]?><br />
   <?endif;?>
   <?if(count($arResult["LINKED_ELEMENTS"])>0):?>
      <br /><b><?=$arResult["LINKED_ELEMENTS"][0]["IBLOCK_NAME"]?>:</b>
      <ul>
   <?foreach($arResult["LINKED_ELEMENTS"] as $arElement):?>
      <li><a href="<?=$arElement["DETAIL_PAGE_URL"]?>"><?=$arElement["NAME"]?></a></li>
   <?endforeach;?>
      </ul>
   <?endif?>
   <?
   // additional photos
   $LINE_ELEMENT_COUNT = 2; // number of elements in a row
   if(count($arResult["MORE_PHOTO"])>0):?>
      <a name="more_photo"></a>
<div class="more-photo-images">
      <?foreach($arResult["MORE_PHOTO"] as $PHOTO):?>
         <div class="more-photo-image"><a rel="lightbox[goods]" href="/thumb/996x0xIN/<?=$PHOTO["SRC"]?>"><img border="0" src="/thumb/150x100xCUT/<?=$PHOTO["SRC"]?>" alt="<?=$arResult["NAME"]?>" title="<?=$arResult["NAME"]?>" /></a></div>
      <?endforeach?></div>
   <?endif?>

</div>

там в конце выводятся дополнительные изображения

необходимо выводить эти же дополнительные изображения и в списке товаров:
Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?><?php if ($arResult["PICTURE"]["SRC"]) {?>
<table cellpadding="0" cellspacing="0" border="0">
<tr><td>
<div class="section-preview">
<img style="width:300px" src="<?=$arResult["PICTURE"]["SRC"]?>" title="<?=$arResult["NAME"]?>" /></div>
<?php } else { ?><?php }?>
<h1><?=$arResult["NAME"]?></h1>
<?=$arResult["DESCRIPTION"]?>
</td></tr></table>
<div class="catalog-section">
<?if($arParams["DISPLAY_TOP_PAGER"]):?>
   <?=$arResult["NAV_STRING"]?><br />
<?endif;?>
<table cellpadding="0" cellspacing="0" border="0">

      <?foreach($arResult["ITEMS"] as $cell=>$arElement):?>

      <?if($cell%$arParams["LINE_ELEMENT_COUNT"] == 0):?>
      <tr>
      <?endif;?>

      <td valign="top" width="<?=round(100/$arParams["LINE_ELEMENT_COUNT"])?>%">

         <table class="product-block" cellpadding="0" cellspacing="2" border="0">
            <tr>
               <?if(is_array($arElement["PREVIEW_PICTURE"])):?>
                  <td valign="top">
                  <a href="<?=$arElement["DETAIL_PAGE_URL"]?>"><img class="image-border" border="0" src="/thumb/150x150xCUT/<?=$arElement["PREVIEW_PICTURE"]["SRC"]?>" alt="<?=$arElement["NAME"]?>" title="<?=$arElement["NAME"]?>" /></a><br />
                  </td>
               <?elseif(is_array($arElement["DETAIL_PICTURE"])):?>
                  <td valign="top">
                  <a href="<?=$arElement["DETAIL_PAGE_URL"]?>"><img class="image-border" border="0" src="/thumb/150x150xCUT/<?=$arElement["DETAIL_PICTURE"]["SRC"]?>" alt="<?=$arElement["NAME"]?>" title="<?=$arElement["NAME"]?>" /></a><br />
                  </td>
               <?endif;?>
               <td valign="top">
<span class="product-name"><a href="<?=$arElement["DETAIL_PAGE_URL"]?>"><?=$arElement["NAME"]?></a></span><br />
                  <?foreach($arElement["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
                     <?=$arProperty["NAME"]?>: <?
  &
ответил 15 Авг, 13 от Targo (240 баллов)
подскажите, проблема решилась? как будет выглядеть код в result_modifier для catalog.section?
00 голосов
Какой компонент используется для показа списка товаров?
bitrix:catalog.section?
ответил 14 Ноя, 13 от Ly (4,580 баллов)
00 голосов
да, он самый
ответил 23 Фев, 14 от Targo (240 баллов)
00 голосов
Дополнительные изображения хранятся в свойстве MORE_PHOTO элементов инфоблока?
В настройках компонента в поле "Свойства" это свойство выбрано?

Если да, то вам, скорее всего, придётся писать result_modifier.php для шаблона bitrix;catalog.section и обрабатывать в нём значения свойства MORE_PHOTO для каждого элемента по аналогии с тем, как это делается в компоненте bitrix;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;
   }
}

Note: если вы просто вставите этот код в result_modifier.php, он не заработает. Его надо дорабатывать.
ответил 15 Июнь, 14 от Ly (4,580 баллов)
подскажите, проблема решилась? как будет выглядеть код в result_modifier для catalog.section?
00 голосов
Цитата
Dmitry Ban пишет:
В настройках компонента в поле "Свойства" это свойство выбрано?

был уверен, что прописал
теперь потенциальные изображения выводятся просто в виде ссылок на нужные картинки.
выводит их этот код:
Код
<?foreach($arElement["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
<?
   if(is_array($arProperty["DISPLAY_VALUE"]))
     echo implode("&nbsp;/&nbsp;", $arProperty["DISPLAY_VALUE"]);
   else
     echo $arProperty["DISPLAY_VALUE"];
?>
<?endforeach;?>


Но не могу преобразовать эти ссылки в нужные мне превью
ответил 13 Окт, 14 от Targo (240 баллов)
00 голосов
Да, bitrix:catalog.section не делает такую обработку свойства MORE_PHOTO, как bitrix:catalog.element. Это вам придётся делать самому в result_modifier.php шаблона компонента.
ответил 13 Фев, 15 от Ly (4,580 баллов)
00 голосов
А можно где примерный код взять? С программированием я не очень(
ответил 25 Май, 15 от Targo (240 баллов)

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

0 голосов
2 ответов
спросил 12 Апр, 14 от Tafna (100 баллов)
0 голосов
3 ответов
спросил 21 Фев, 14 от Jugolo (180 баллов)
0 голосов
4 ответов
спросил 25 Дек, 13 от dukalis (100 баллов)
0 голосов
5 ответов