Доброй ночи, уважаемые разработчики! Нам сделали интернет-магазин одежды на Битриксе с полностью новыми шаблонами. Но я заметила, что фильтры работают неправильно. Если выбрать категорию "Платья" (http://www.regno-shop.ru/catalog/dresses-woman/ ), то открывается каталог на 12 страниц. Но, если я хочу найти платье именно 52 размера, то мне нужно сначала перейти на страницу с платьями этого размера (как-то интуитивно), и только тогда мне фильтр выдаст возможность отфильтровать эту страницу по заданному параметру. То есть, если платье находится на странице 5-й, скажем, с первой найти мне его не судьба, потому что на данной странице платьев в этом размере нет. То же касается и фильтрации по бренду и по цвету. Разработчики, которые нам сделали, молчат. А ситуацию нужно поправить срочно, поскольку клиенты уходят, не найдя своего размера. Мне кажется, что вся суть содержится в этом коде:
Или вот в этом:
Помогите, пожалуйста, разобраться, в чем дело и как исправить!
Код |
---|
<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <? if(!empty($arResult['ITEMS'])) { $arColors = array(); $arF = array(); foreach($arResult['ITEMS'] as $item) { $arF['BRANDS'][] = $item['PROPERTIES']['BRAND']['VALUE']; if(!isset($arF['PRICE']['MIN']) || $arF['PRICE']['MIN'] > $item['PRICES']['MAIN']['DISCOUNT_VALUE']) { $arF['PRICE']['MIN'] = $item['PRICES']['MAIN']['DISCOUNT_VALUE']; } if(!isset($arF['PRICE']['MAX']) || $arF['PRICE']['MAX'] < $item['PRICES']['MAIN']['DISCOUNT_VALUE']) { $arF['PRICE']['MAX'] = $item['PRICES']['MAIN']['DISCOUNT_VALUE']; } if(!empty($item['OFFERS'])) { foreach($item['OFFERS'] as $offer) { $arColors[] = $offer['DISPLAY_PROPERTIES']['COLOR']['VALUE']; $arSizes[] = $offer['DISPLAY_PROPERTIES']['SIZE']['VALUE']; } } } if(!empty($arColors)) { $arColors = array_unique($arColors); $arFilter = array('IBLOCK' => '4', 'ACTIVE' => 'Y', 'ID' => $arColors); $res = CIBlockElement::GetList(Array('SORT' => 'ASC'), $arFilter, false, false, array()); $arColors = array(); while($row = $res->GetNext()) { $arColors[$row['ID']] = $row['CODE']; $arF['COLORS'][$row['ID']] = $row['NAME']; } $arResult['arColors'] = $arColors; } if(!empty($arSizes)) { $arSizes = array_unique($arSizes); $arFilter = array('IBLOCK' => '5', 'ACTIVE' => 'Y', 'ID' => $arSizes); $res = CIBlockElement::GetList(Array('SORT' => 'ASC'), $arFilter, false, false, array()); $arSizes = array(); while($row = $res->GetNext()) { $arF['SIZES'][$row['ID']] = $row['NAME']; } } if(!empty($arF['BRANDS'])) { $arF['BRANDS'] = array_unique($arF['BRANDS']); $arFilter = array('IBLOCK' => '2', 'ACTIVE' => 'Y', 'ID' => $arF['BRANDS']); $res = CIBlockElement::GetList(Array('SORT' => 'ASC'), $arFilter, false, false, array()); $arF['BRANDS'] = array(); while($row = $res->GetNext()) { $arF['BRANDS'][$row['ID']] = $row['NAME']; } } if(!empty($arF)) { $arResult['arFilter'] = $arF; } } ?> <script type="text/javascript"> function rcAsyncInit() { rcApi.categoryView(<?=$arResult['ID'];?>); } </script> |
Код |
---|
<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <? global $arrFilter, $arFilter; if((empty($arResult['ITEMS']) && (!empty($arrFilter) || $arResult['IBLOCK_SECTION_ID'] == '143')) || !empty($arResult['ITEMS'])): ?> <div class="catalog-section"> <div class="description"> <?=$arResult['DESCRIPTION'];?> </div> <? /* <div class="content-description get-rub"> <span class="text"> 300 рублей в подарок <br />на первый заказ! </span> <script language="JavaScript" src="http://regno-shop.justclick.ru/media/subscribe/helper2.js.php"></script> <form action="http://regno-shop.justclick.ru/subscribe/process/?rid[0]=akcii&tag=top-category-<?=get_page_path();?>&lead_name=%D0%94%D0%BE%D1%80%D0%BE%D0%B3%D0%BE%D0%B9%20%D0%B4%D1%80%D1%83%D0%B3" method="post" target="_blank" id="subscr-form-2850" onsubmit="return jc_chkscrfrm(this, false, false, false, false)" > <span class="input"> <input name="lead_email" type="text" onblur='if(this.value=="") this.value="Введите Ваш E-Mail"' onfocus='if(this.value=="Введите Ваш E-Mail") this.value=""' value="Введите Ваш E-Mail"/> </span> <span class="button"> <input type="submit" name="lead_subscribe" value="" /> </span> <script language="JavaScript">jc_setfrmfld()</script> </form> </div> */?> <? if($arResult['IBLOCK_SECTION_ID'] != '143'): ?> <div class="filter"> <form action="" method="GET"> <input type="hidden" name="filter" value="y" /> <div class="form"> <div class="select"> <p>РАЗМЕР</p> <select name="size"> <option value="">Выбрать размер</option> <? foreach($arResult['arFilter']['SIZES'] as $key => $size):?> <option value="<?=$key;?>" <?=(($key === $arFilter['PROPERTY']['SIZE']) ? 'selected="selected"' : '');?>><?=$size;?></option> <? endforeach;?> </select> </div> <div class="select"> <p>ЦВЕТ</p> <select name="color"> <option value="">Выбрать цвет</option> <? foreach($arResult['arFilter']['COLORS'] as $key => $color):?> <option value="<?=$key;?>" <?=(($key === $arFilter['PROPERTY']['COLOR']) ? 'selected="selected"' : '');?>><?=$color;?></option> <? endforeach;?> </select> </div> <div class="select"> <p>БРЕНД</p> <select name="brand"> <option value="">Выбрать бренд</option> <? foreach($arResult['arFilter']['BRANDS'] as $key => $brand):?> <option value="<?=$key;?>" <?=(($key === $arrFilter['PROPERTY']['BRAND']) ? 'selected="selected"' : '');?>><?=$brand;?></option> <? endforeach;?> </select> </div> <div class="select prices"> <p>Цена,<span> руб</span></p> <div class="price"></div> <input type="text" name="price1" value="<?=((isset($arrFilter['><CATALOG_PRICE_1'])) ? $arrFilter['><CATALOG_PRICE_1'][0] : $arResult['arFilter']['PRICE']['MIN']);?>" /> <input type="text" name="price2" value="<?=((isset($arrFilter['><CATALOG_PRICE_1'])) ? $arrFilter['><CATALOG_PRICE_1'][1] : $arResult['arFilter']['PRICE']['MAX']);?>" /> <div class="clear"></div> </div> <div class="clear"></div> </div> <div class="button"> <div class="send"> <input type="submit" value="" /> </div> <div class="reset"> <a href="<?=$APPLICATION->GetCurDir();?>">Отмена</a> </div> <div class="clear"></div> </div> </form> </div> <? endif;?> <? if(!empty($arResult['ITEMS'])):?> <div id="sort"> <form method="GET" action="<?=$APPLICATION->GetCurPageParam();?>" name="sort"> <div><b>Сортировать товары по:</b></div> <? if($arParams["ELEMENT_SORT_ORDER"] == 'ASC') { $sortArrow = '▲'; $sort = 'sort_price=DESC'; }else{ $sortArrow = '▼'; $sort = ''; } ?> <a href="<?=$APPLICATION->GetCurPageParam((($arParams["ELEMENT_SORT_FIELD"] == 'catalog_PRICE_1') ? $sort : ''), array('sort_price'));?>" class="switcher"> <span class="arrow"><?=(($arParams["ELEMENT_SORT_FIELD"] == 'catalog_PRICE_1') ? $sortArrow : '');?></span> <span>цене</span> </a> </form> <div class="clear"></div> </div> <div class="goods-list"> <? foreach($arResult['ITEMS'] as $key => $arElement):?> <? $inStock = false; foreach($arElement['OFFERS'] as $arVal) { if(!empty($arVal['CAN_BUY'])) $inStock = true; } ?> <? if($key%3 == 0 && $key != 0):?> <div class="clear"></div> <? endif;?> <div class="item<?=(($key%3 == 0) ? ' first' : '');?>"> <div class="img"> <a href="<?=$arElement['DETAIL_PAGE_URL'];?>"> <img src="<?=$arElement['PREVIEW_PICTURE']['SRC'];?>" /> <? if(!empty($arElement['PROPERTIES']['STATUS']['VALUE'])):?> <div class="status <?=$arElement['PROPERTIES']['STATUS']['VALUE_XML_ID'];?>"></div> <? endif;?> </a> <a href="/ajax/good.php?id=<?=$arElement['ID'];?>" rel="ajax_group" class="fancybox-ajax die">Быстрый просмотр</a> </div> <div class="name"> <a href="<?=$arElement['DETAIL_PAGE_URL'];?>"><?=$arElement['NAME'];?></a><br /> <span><?=$arResult['NAME'];?></span> </div> <? if(!empty($arElement['OFFERS'])):?> <? $arColors = array(); $arElement['OFFERS'] = array_reverse($arElement['OFFERS']); ?> <div class="colors-block"> <? foreach($arElement['OFFERS'] as $offer):?> <? if(!in_array($offer['DISPLAY_PROPERTIES']['COLOR']['VALUE'], $arColors)):?> <div class="color" style="background-color: #<?=$arResult['arColors'][$offer['DISPLAY_PROPERTIES']['COLOR']['VALUE']];?>;"></div> <? $arColors[] = $offer['DISPLAY_PROPERTIES']['COLOR']['VALUE'];?> <? endif;?> <? endforeach;?> <div class="clear"></div> </div> <? endif;?> <div class="price"> <? if($arElement['PRICES']['MAIN']['VALUE'] == $arElement['PRICES']['MAIN']['DISCOUNT_VALUE']):?> <?=number_format($arElement['PRICES']['MAIN']['VALUE'], 0, ' ', '.');?> руб <? else:?> <div class="new-price"><?=number_format($arElement['PRICES']['MAIN']['DISCOUNT_VALUE'], 0, ' ', '.');?> руб</div> <div class="old-price"><?=number_format($arElement['PRICES']['MAIN']['VALUE'], 0, ' ', '.');?> руб</div> <div class="clear"></div> <div class="economy">Экономия <?=number_format(($arElement['PRICES']['MAIN']['VALUE'] - $arElement['PRICES']['MAIN']['DISCOUNT_VALUE']), 0, ' ', '.');?> руб!</div> <? endif;?> <div class="clear"></div> <? if($inStock):?> <div class="availability in">В наличии</div> <? else:?> <div class="availability req">Под заказ</div> <? endif;?> <div class="clear"></div> </div> </div> <? endforeach;?> <div class="clear"></div> </div> <?if($arParams["DISPLAY_BOTTOM_PAGER"]):?> <p class="page-navigation"><?=$arResult["NAV_STRING"]?></p> <?endif?> <? elseif($arResult['IBLOCK_SECTION_ID'] == '143'):?> <? global $arrFilter; switch($arResult['ID']) { case '144' : $section = '4'; break; case '145' : $section = '5'; break; case '146' : $section = '8'; break; default: $section = ''; } $arrFilter = array('PROPERTY_SECTION_NEW' => $section); $APPLICATION->IncludeComponent("bitrix:catalog.section", "other-section", array( "IBLOCK_TYPE" => "catalog", "IBLOCK_ID" => "1", "SECTION_ID" => "", "SECTION_CODE" => "", "SECTION_USER_FIELDS" => array( 0 => "", 1 => "", ), "ELEMENT_SORT_FIELD" => "RAND", "ELEMENT_SORT_ORDER" => "asc", "FILTER_NAME" => "arrFilter", "INCLUDE_SUBSECTIONS" => "A", "SHOW_ALL_WO_SECTION" => "Y", "PAGE_ELEMENT_COUNT" => "500", "LINE_ELEMENT_COUNT" => "3", "PROPERTY_CODE" => array( 0 => "STATUS", 1 => "", ), "OFFERS_FIELD_CODE" => array( 0 => "", 1 => "", ), "OFFERS_PROPERTY_CODE" => array( 0 => "CML2_LINK", 1 => "SIZE", 2 => "COLOR", 3 => "", ), "OFFERS_SORT_FIELD" => "sort", "OFFERS_SORT_ORDER" => "asc", "OFFERS_LIMIT" => "15", "SECTION_URL" => "/catalog/#SECTION_CODE#/", "DETAIL_URL" => "/catalog/#SECTION_CODE#/#ELEMENT_CODE#/", "BASKET_URL" => "/basket/", "ACTION_VARIABLE" => "action", "PRODUCT_ID_VARIABLE" => "id", "PRODUCT_QUANTITY_VARIABLE" => "quantity", "PRODUCT_PROPS_VARIABLE" => "prop", "SECTION_ID_VARIABLE" => "SECTION_ID", "AJAX_MODE" => "N", "AJAX_OPTION_JUMP" => "N", "AJAX_OPTION_STYLE" => "Y", "AJAX_OPTION_HISTORY" => "N", "CACHE_TYPE" => "A", "CACHE_TIME" => "3600", "CACHE_GROUPS" => "Y", "META_KEYWORDS" => "-", "META_DESCRIPTION" => "-", "BROWSER_TITLE" => "-", "ADD_SECTIONS_CHAIN" => "N", "DISPLAY_COMPARE" => "N", "SET_TITLE" => "N", "SET_STATUS_404" => "N", "CACHE_FILTER" => "N", "PRICE_CODE" => array( 0 => "MAIN", ), "USE_PRICE_COUNT" => "N", "SHOW_PRICE_COUNT" => "1", "PRICE_VAT_INCLUDE" => "Y", "USE_PRODUCT_QUANTITY" => "N", "CONVERT_CURRENCY" => "Y", "CURRENCY_ID" => "RUB", "OFFERS_CART_PROPERTIES" => array( 0 => "SIZE", 1 => "COLOR", ), "DISPLAY_TOP_PAGER" => "N", "DISPLAY_BOTTOM_PAGER" => "N", "PAGER_TITLE" => "Товары", "PAGER_SHOW_ALWAYS" => "N", "PAGER_TEMPLATE" => "", "PAGER_DESC_NUMBERING" => "N", "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000", "PAGER_SHOW_ALL" => "Y", "AJAX_OPTION_ADDITIONAL" => "" ), $component );?> <? endif;?> </div> <? endif;?> |