Вот, что есть. Сортировка сейчас идет жестко по всем значениям массива.
Как оптимальнее сделать сортировку только по одному выбранному параметру, заранее спасибо!
Как оптимальнее сделать сортировку только по одному выбранному параметру, заранее спасибо!
Код |
---|
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <? $arSortFields = SortCatalog::getSortFields(); $arSortFieldsRequest = SortCatalog::setSortForListProducts(); $arCountPages = SortCatalog::getCountPages(); ?> <sc ript> $(function() { $(".sort_form .sort input").on("click", function() { if ($("input[name=COUNT_PAGES]").val() == "") { $("input[name=COUNT_PAGES]").detach(); } $(this).closest("form").submit(); }); $(".sort_form a").on("click", function(e) { e.preventDefault(); var pageCount = $(this).text()-0; $("input[name=COUNT_PAGES]").val(pageCount); $(this).closest("form").submit(); }); }); </sc ript> <div class="control-block"> <fo rm class="sort_form" method="GET" action=""> <? if(is_array($_REQUEST) && count($_REQUEST)): foreach ($_REQUEST as $key => $value) { if(is_array($value) && $key != 'arrSort'){ foreach ($value as $k => $val) { $val = CDatabase::ForSql(strip_tags($val));?> <input type="hidden" name="<?=$key."[".$k."]"?>" value="<?=$val?>"> <?} }elseif($key != 'arrSort'){ $value = CDatabase::ForSql(strip_tags($value));?> <input type="hidden" name="<?=$key?>" value="<?=$value?>"> <? } } endif; ?> <label class="control-label" for="">Сортировать по:</label> <? /* echo "<pre>"; print_r($_REQUEST["arrSort"]); echo "</pre>"; */ //print_r($_GET); //$_REQUEST["arrSort"] = $_GET['NAME']; ?> <ul class="checkbox clearfix"> <? foreach($arSortFields as $i=>$arSortField):?> <? if (is_array($_REQUEST["arrSort"])):?> <? if (in_array($arSortField["SORT"], $_REQUEST["arrSort"])) { $checked = "checked"; } else { $checked = ""; }?> <? endif;?> <? $checked = ""; foreach($arSortFieldsRequest as $arSortFieldsRequestSort=>$arSortFieldsRequestOrder) { if ($arSortFieldsRequestOrder == "ASC" && $arSortField["SORT"] == $arSortFieldsRequestSort) { $checked = "checked"; break; } } ?> <li class="sort"> <input <?=$checked?> name="arrSort[]" value="<?=$arSortField["SORT"]?>" type="checkbox" id="check-<?=$i+1?>"> <label for="check-<?=$i+1?>"><span class="help"><?=$arSortField["NAME"]?></span><span class="w-icons-chArrow"></span></label> </li> <? endforeach;?> </ul> <div class="count-show"> <div class="control-label">Выводить по:</div> <ul> <? foreach($arCountPages as $arCountPage):?> <? if ($arCountPage == $_REQUEST["COUNT_PAGES"]) { $addClass = "active"; } else { $addClass = ""; }?> <li><a class="dotted <?=$addClass?>" href="#"><?=$arCountPage?></a></li> <? endforeach;?> </ul> </div> <input type="hidden" name="COUNT_PAGES" value="<?=$_REQUEST["COUNT_PAGES"]?>"> </form> <div class="checkCatalog"> <div class="check-group"> <input type="radio" checked="" id="table" name="catalog"> <label for="table">table</label> </div> <div class="check-group"> <input type="radio" id="sprite" name="catalog"> <label for="sprite">sprite</label> </div> </div> </div> <sc ript type="text/javascript"> var table = document.querySelector('#table'); var sprite = document.querySelector('#sprite'); sprite.on click = function(){ if (sprite.checked) { $('.catalog').addClass('open'); } } table.on click = function() { if (table.checked) { $('.catalog').removeClass("open") } } </sc ript> |