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

Фильтрующие свойства

00 голосов
0
Добрый день!

Может кто-нибудь подскажет.

На странице расположены компонент "детальное отображение новости", 2 взаимосвязанных компонента: фильтр элементов каталога и список связанных элементов.

Для различных страниц свойства связанных элементов различны.
Хотелось бы выводить фильтр только по тем свойствам, у которых есть значение как в случае с выводом связанных элементов. Даже если в настройках компонента ставишь выведение конкретного свойства, если ни у одного связанного элемента нет значения данного свойства, то графа не выводится. Хотелось бы тоже реализовать и в фильтре.

Код фильтра
Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<form name="<?=$arResult["FILTER_NAME"]."_form"?>" action="" method="get">
   <?foreach($arResult["ITEMS"] as $arItem):
      if(array_key_exists("HIDDEN", $arItem)):
         echo $arItem["INPUT"];
      endif;
   endforeach;?>
   <table class="data-table" cellspacing="0" cellpadding="2">
   <thead>
      <tr>
         <td colspan="2" align="center"><?=GetMessage("IBLOCK_FILTER_TITLE")?></td>
      </tr>
   </thead>
   <tbody>
      <?foreach($arResult["ITEMS"] as $arItem):?>
         <?if(!array_key_exists("HIDDEN", $arItem)):?>
            <tr>
               <td valign="top"><?=$arItem["NAME"]?>:</td>
               <td valign="top"><?=$arItem["INPUT"]?></td>
            </tr>
         <?endif?>
      <?endforeach;?>
   </tbody>
   <tfoot>
      <tr>
         <td colspan="2">
            <input type="submit" name="set_filter" value="<?=GetMessage("IBLOCK_SET_FILTER")?>" /><input type="hidden" name="set_filter" value="Y" />&nbsp;&nbsp;<input type="submit" name="del_filter" value="<?=GetMessage("IBLOCK_DEL_FILTER")?>" /></td>
      </tr>
   </tfoot>
   </table>
</form>


Код списка связанных элементов
Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<div class="catalog-section">
<p><?=$arResult["NAV_STRING"]?></p>
<table class="data-table" cellspacing="0" cellpadding="0" border="0" width="100%">
   <thead>
   <tr>
      <td><?=GetMessage("CATALOG_TITLE")?></td>
      <?foreach($arResult["ITEMS"][0]["DISPLAY_PROPERTIES"] as $arProperty):?>
         <td><?=$arProperty["NAME"]?></td>
      <?endforeach;?>
      <?foreach($arResult["PRICES"] as $code=>$arPrice):?>
         <td><?=$arPrice["TITLE"]?></td>
      <?endforeach?>
      <td>&nbsp;</td>
   </tr>
   </thead>
   <?foreach($arResult["ITEMS"] as $arElement):?>
   <tr>
      <td>
         <?=$arElement["NAME"]?>
               </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"];?>
      </td>
      <?endforeach?>
      <?foreach($arResult["PRICES"] as $code=>$arPrice):?>
      <td>
         <?if($arPrice = $arElement["PRICES"][$code]):?>
            <?if($arPrice["DISCOUNT_VALUE"] < $arPrice["VALUE"]):?>
               <s><?=$arPrice["PRINT_VALUE"]?></s><br /><span class="catalog-price"><?=$arPrice["PRINT_DISCOUNT_VALUE"]?></span>
            <?else:?>
               <span class="catalog-price"><?=$arPrice["PRINT_VALUE"]?></span>
            <?endif?>
         <?else:?>
            &nbsp;
         <?endif;?>
      </td>
      <?endforeach;?>
      <td>
         <?if($arElement["CAN_BUY"]):?>
         &
спросил 26 Март, 14 от Alger (100 баллов)

Ваш ответ

Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.