1. Небольшой хак позволяет выводить в компоненте ФИЛИТР свойства типа "множественный список"
не только в виде списка, но и в виде четбоксов.
Для этого добавляем в файл \bitrix\modules\iblock\install\templates\iblock\catalog\.description.php
компонету "element_filter.php" еще одно свойство:
"vid_multilist" => array(
"NAME" => "Способ отображения множественного списка",
"TYPE" => "LIST",
"SIZE" => "2",
"VALUES" => array(
"chetbox" => "Отображать как флажки",
"list" => "Отображать как список"
),
"ADDITIONAL_VALUES" => "N",
"REFRESH" => "Y"
),
А в самом файле компоненты element_filter.php находим:
$res .= SelectBoxMFromArray($name."[]", $arrRef, $value, "", false, $LIST_HEIGHT, "class=\"inputselect\"");
И заменяем на
if ($vid_multilist == "chetbox")
{
$i=0;
foreach($arrRef[reference_id] as $ref)
{
$res .= InputType(checkbox, $name."[]", $ref, $value,false ,$arrRef[reference][$i] , "");
$i++;
}
}
if ($vid_multilist == "list")
{
$res .= SelectBoxMFromArray($name."[]", $arrRef, $value, "", false, $LIST_HEIGHT, "class=\"inputselect\"");
}
Теперь можно выбирать. Имхо, четбоксы - удобнее :-)
2. Небольшой хак позволяющий выводить параметры фильтра не в один столбец, а в заданое количество
столбцов - что более рационально расходует место на странице при большом количестве параметров.
Для этого добавляем в файл \bitrix\modules\iblock\install\templates\iblock\catalog\.description.php
компонету "element_filter.php" еще одно свойство:
"kolonki" => array(
"NAME" => "Количество столбцов",
"TYPE" => "STRING",
"DEFAULT" => "1"
),
А в самом файле компоненты element_filter.php находим:
<table cellspacing="0" cellpadding="2" class="tablebody" width="100%">
Убираем всю таблицу, а вместо нее ставим:
<table cellspacing="0" cellpadding="2" class="tablebody" width="100%">
<tr>
<td class="tablehead" colspan="2" align="center"><font class="tabletitletext"><b><? echo $APPLICATION->GetProperty("title");?></b></font></td>
</tr>
<tr>
<td valign="top">
<table cellspacing="0" cellpadding="0" width="100%" valign="top">
<tr>
<?
$i='1';
$width=100/$kolonki;
$arrFIELDS = array_merge($arrFIELDS, $arrPROPERTY); $arrFIELDS = array_merge($arrFIELDS, $arrPRICE);
foreach($arrFIELDS as $arr):?>
<td width="<? echo $width; ?>%"><table cellspacing="0" cellpadding="0" border="0" width="100%"><tr><td width="50%" align="right"><font class="tablebodytext"><?=$arr["NAME"]?>:</font></td>
<td width="50%" align="left" style="padding-left: 5px;"><font class="tablebodytext"><?=$arr["INPUT"]?></font></td></tr></table>
</td>
<?php
if ($i == $kolonki)
{ echo '</tr><tr>'; $i='1'; }
else $i++;
?>
<?endforeach;?>
<?php
if ($i == '0') { echo '';}
else { echo '<td COLSPAN='. $i. '></td>';}
?>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" align="left" valign="top"><font class="tablebodytext"><input class="inputbuttonflat" type="submit" name="set_filter" value="Выбрать "> <input type="hidden" name="set_filter" value="Y"><input class="inputbuttonflat" type="submit" name="del_filter" value="<?=GetMessage("IBLOCK_DEL_FILTER")?>"></font></td>
</tr>
<tr>
<td colspan="2"><font class="tablebodytext">Сортировать по: <a style="color:red" href="<?=$APPLICATION->GetCurPageParam("_sort=name&_sortorder=asc",Array("_sort","_sortorder"))?>"><b>наименованию</b></a> | <a style="color:blue" href="<?=$APPLICATION->GetCurPageParam("_sort=price&_sortorder=asc",Array("_sort","_sortorder"))?>"><b>цене</b></a></font></td>
</tr>
</table>
Толко у вас, наверное, другие поля для сортировки будут.