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

Список элементов таблицей (catalog.section)

00 голосов
7
Вот код
Код
<table cellpadding="0" cellspacing="0" border="0">
      <tr>
         <th>
            Моедель<br/>
            (Название)
         </th>
         <?foreach($arElement["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
            <th><?=$arProperty["NAME"]?></th>
         <?endforeach?>
      </tr>
      <?foreach($arResult["ITEMS"] as $cell=>$arElement):?>
      <?
      $this->AddEditAction($arElement['ID'], $arElement['EDIT_LINK'], CIBlock::GetArrayByID($arParams["IBLOCK_ID"], "ELEMENT_EDIT"));
      $this->AddDeleteAction($arElement['ID'], $arElement['DELETE_LINK'], CIBlock::GetArrayByID($arParams["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => GetMessage('CT_BCS_ELEMENT_DELETE_CONFIRM')));
      ?>
      <tr>
         <td>
         <a href="<?=$arElement["DETAIL_PAGE_URL"]?>"><?=$arElement["NAME"]?></a><br />
         </td>
         <?foreach($arElement["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
                     <td><?
                        if(is_array($arProperty["DISPLAY_VALUE"]))
                           echo implode("&nbsp;/&nbsp;", $arProperty["DISPLAY_VALUE"]);
                        else
                           echo $arProperty["DISPLAY_VALUE"];?><br /></td>
         <?endforeach?>
      </tr>


      <?endforeach; // foreach($arResult["ITEMS"] as $arElement):?>

      </tr>


</table>


только первый массив не выводится, понимаю что не правильно переменные в цикле заданны, но как правильно сделать не понимаю?
спросил 15 Июль, 13 от Acier (460 баллов)

7 Ответы

00 голосов
по вашей логике нужно заменить
<?foreach($arElement["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
например,
<?foreach($arResult["ITEMS"][0]["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
ответил 15 Июль, 13 от unik (2,560 баллов)
00 голосов
Андрей спасибо! помогло!

Вот окончательный код:
Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<div class="catalog-section">
<?if($arParams["DISPLAY_TOP_PAGER"]):?>
   <?=$arResult["NAV_STRING"]?><br />
<?endif;?>
<table>
      <tr>
         <td>
            Модель<br/>
            (Название)
         </td>
         <?foreach($arResult["ITEMS"][0]["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
            <td><?=$arProperty["NAME"]?></td>
         <?endforeach?>
      </tr>
      <?foreach($arResult["ITEMS"] as $cell=>$arElement):?>
      <?
      $this->AddEditAction($arElement['ID'], $arElement['EDIT_LINK'], CIBlock::GetArrayByID($arParams["IBLOCK_ID"], "ELEMENT_EDIT"));
      $this->AddDeleteAction($arElement['ID'], $arElement['DELETE_LINK'], CIBlock::GetArrayByID($arParams["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => GetMessage('CT_BCS_ELEMENT_DELETE_CONFIRM')));
      ?>
      <tr>
         <td>
         <a href="<?=$arElement["DETAIL_PAGE_URL"]?>"><?=$arElement["NAME"]?></a><br />
         </td>
         <?foreach($arElement["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
                     <td><?
                        if(is_array($arProperty["DISPLAY_VALUE"]))
                           echo implode("&nbsp;/&nbsp;", $arProperty["DISPLAY_VALUE"]);
                        else
                           echo $arProperty["DISPLAY_VALUE"];?><br /></td>
         <?endforeach?>
      </tr>


      <?endforeach; // foreach($arResult["ITEMS"] as $arElement):?>

      </tr>


</table>
<?if($arParams["DISPLAY_BOTTOM_PAGER"]):?>
   <br /><?=$arResult["NAV_STRING"]?>
<?endif;?>
</div>


вот еще думаю может как то улучшить код!
ответил 03 Сен, 13 от Acier (460 баллов)
00 голосов
Вот еще понадобилось вывести информацию о разделе, конкретно описание если оно есть! Возможно ли в одну строку это все вывести или это тяжело будет сделать?

p.s.: не бейте меня я только учусь)
ответил 02 Дек, 13 от Acier (460 баллов)
00 голосов
Сам же и отвечу :)
В шаблоне каталога в нужном месте
Код
<?=$arResult['DESCRIPTION']?>
ответил 14 Март, 14 от Acier (460 баллов)
00 голосов
Хотелось бы улучшить эту табличку, раскрасить строки таблицы в 2 цвета светлый и темный через строчку! Есть какае-нибудь идеи на счет этого?
ответил 05 Июль, 14 от Acier (460 баллов)
00 голосов
Код
$color=($color=='red'? 'blue' : 'red');
<tr style="background:<?=$color;?>;">
Раскрасит таблицу в красный и синий.
ответил 05 Ноя, 14 от NitroGeN (2,840 баллов)
00 голосов
Цитата
Евгений Малков пишет:
Код
 $color=($color=='red'? 'blue' : 'red');
<tr style="background:<?=$color;?>;"> 
Раскрасит таблицу в красный и синий.
Спасибо, можешь немного алгоритм условия расписать немного не понял?! Нашел решение немного другое вообще элементарное:

Это в ccs пишем:
Код
#sampletable tr:nth-of-type(odd){ background: lightblue;}
#sampletable tr:nth-of-type(even){background: lightyellow;}
а таблице просто id даешь sampletable
ответил 04 Март, 15 от Acier (460 баллов)

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

0 голосов
1 ответ
0 голосов
3 ответов
+1 голос
1 ответ
спросил 26 Сен, 16 от loony (540 баллов)
0 голосов
1 ответ
спросил 25 Июль, 15 от аноним