Всем здравствуйте, только начинаю работать с 1С битрикс, и работаю над первым проектом, так что прошу сильно не пинать если, что то неправильно спрошу )))
В общем стоит задача вывести все товары из разных категорий с одинаковым брендом, при этом должен работать умный фильтр со свойствами, даже если они различаются у разных товаров.
Вывести по бренду у меня получилось.
В шаблоне комплексого компонента в section.php ловлю $_REQUEST[‘BRAND_NAME’] , соответственно заранее подправив urlrewrite.php
далее перед вызовом bitrix:catalog.section делаю следующее
собственно вызываю сам bitrix:catalog.section
Выводит всё по бренду как нужно, но , не работает кнопка добавить в корзину и сравнение товаров,
это первая проблема, вторая проблема это умный фильтр, его вызываю конечно раньше того что описано выше, в принципе всё из стандартного шаблона из версии 15.
в таком виде фильтр не работает совсем, не выводит свойства, только два цена и ещё один бренд.
если раскоментировать первую строчку параметров компонента "SHOW_ALL_WO_SECTION" => "Y”, то свойства товаров появляются в умном фильтре, но фильтр по прежнему не работает., и ещё нужно чтобы в фильтре не было возможности фильтровать товары по тому свойству по которому уже произведена выборка.
В идеале ещё нужно чтобы bitrix:catalog.section.list выводил количество товаров в подкатегориях только для этого бренда. и при нажатии на категорию мы переходили в неё и там бы отображались товары так же отсортированные по бренду.
Подскажите в какую сторону копать?
Всем заранее спасибо за помощь и затраченное время.
p.s. при выводе категорий товаров стандартным способом всё работает прекрасно и фильтр и сравнение и добавление в корзину.
В общем стоит задача вывести все товары из разных категорий с одинаковым брендом, при этом должен работать умный фильтр со свойствами, даже если они различаются у разных товаров.
Вывести по бренду у меня получилось.
В шаблоне комплексого компонента в section.php ловлю $_REQUEST[‘BRAND_NAME’] , соответственно заранее подправив urlrewrite.php
далее перед вызовом bitrix:catalog.section делаю следующее
| Код |
|---|
if(isset($_REQUEST['BRAND_NAME']) && !empty($_REQUEST['BRAND_NAME'])){
global $arrFilter;
$arrFilter = array("PROPERTY_MANUFACTURER_VALUE"=>$_REQUEST['BRAND_NAME']);
$APPLICATION->AddChainItem($_REQUEST['BRAND_NAME'], "".SITE_DIR."katalog/");
$APPLICATION->SetTitle($_REQUEST['BRAND_NAME'], "".SITE_DIR."katalog/");
unset($_REQUEST['BRAND_NAME']);
|
| Код |
|---|
$intSectionID = $APPLICATION->IncludeComponent( "bitrix:catalog.section", "", array( "SHOW_ALL_WO_SECTION" => "Y", "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"], "IBLOCK_ID" => $arParams["IBLOCK_ID"], "ELEMENT_SORT_FIELD" => $arParams["ELEMENT_SORT_FIELD"], "ELEMENT_SORT_ORDER" => $arParams["ELEMENT_SORT_ORDER"], "ELEMENT_SORT_FIELD2" => $arParams["ELEMENT_SORT_FIELD2"], "ELEMENT_SORT_ORDER2" => $arParams["ELEMENT_SORT_ORDER2"], "PROPERTY_CODE" => $arParams["LIST_PROPERTY_CODE"], "META_KEYWORDS" => $arParams["LIST_META_KEYWORDS"], "META_DESCRIPTION" => $arParams["LIST_META_DESCRIPTION"], "BROWSER_TITLE" => $arParams["LIST_BROWSER_TITLE"], "INCLUDE_SUBSECTIONS" => $arParams["INCLUDE_SUBSECTIONS"], "BASKET_URL" => $arParams["BASKET_URL"], "ACTION_VARIABLE" => $arParams["ACTION_VARIABLE"], "PRODUCT_ID_VARIABLE" => $arParams["PRODUCT_ID_VARIABLE"], "SECTION_ID_VARIABLE" => $arParams["SECTION_ID_VARIABLE"], "PRODUCT_QUANTITY_VARIABLE" => $arParams["PRODUCT_QUANTITY_VARIABLE"], "PRODUCT_PROPS_VARIABLE" => $arParams["PRODUCT_PROPS_VARIABLE"], "FILTER_NAME" => $arParams["FILTER_NAME"], "CACHE_TYPE" => $arParams["CACHE_TYPE"], "CACHE_TIME" => $arParams["CACHE_TIME"], "CACHE_FILTER" => $arParams["CACHE_FILTER"], "CACHE_GROUPS" => $arParams["CACHE_GROUPS"], "SET_TITLE" => $arParams["SET_TITLE"], "SET_STATUS_404" => $arParams["SET_STATUS_404"], "DISPLAY_COMPARE" => $arParams["USE_COMPARE"], "PAGE_ELEMENT_COUNT" => $arParams["PAGE_ELEMENT_COUNT"], "LINE_ELEMENT_COUNT" => $arParams["LINE_ELEMENT_COUNT"], "PRICE_CODE" => $arParams["PRICE_CODE"], "USE_PRICE_COUNT" => $arParams["USE_PRICE_COUNT"], "SHOW_PRICE_COUNT" => $arParams["SHOW_PRICE_COUNT"], "PRICE_VAT_INCLUDE" => $arParams["PRICE_VAT_INCLUDE"], "USE_PRODUCT_QUANTITY" => $arParams['USE_PRODUCT_QUANTITY'], "ADD_PROPERTIES_TO_BASKET" => (isset($arParams["ADD_PROPERTIES_TO_BASKET"]) ? $arParams["ADD_PROPERTIES_TO_BASKET"] : ''), "PARTIAL_PRODUCT_PROPERTIES" => (isset($arParams["PARTIAL_PRODUCT_PROPERTIES"]) ? $arParams["PARTIAL_PRODUCT_PROPERTIES"] : ''), "PRODUCT_PROPERTIES" => $arParams["PRODUCT_PROPERTIES"], "DISPLAY_TOP_PAGER" => $arParams["DISPLAY_TOP_PAGER"], "DISPLAY_BOTTOM_PAGER" => $arParams["DISPLAY_BOTTOM_PAGER"], "PAGER_TITLE" => $arParams["PAGER_TITLE"], "PAGER_SHOW_ALWAYS" => $arParams["PAGER_SHOW_ALWAYS"], "PAGER_TEMPLATE" => $arParams["PAGER_TEMPLATE"], "PAGER_DESC_NUMBERING" => $arParams["PAGER_DESC_NUMBERING"], "PAGER_DESC_NUMBERING_CACHE_TIME" => $arParams["PAGER_DESC_NUMBERING_CACHE_TIME"], "PAGER_SHOW_ALL" => $arParams["PAGER_SHOW_ALL"], "OFFERS_CART_PROPERTIES" => $arParams["OFFERS_CART_PROPERTIES"], "OFFERS_FIELD_CODE" => $arParams["LIST_OFFERS_FIELD_CODE"], "OFFERS_PROPERTY_CODE" => $arParams["LIST_OFFERS_PROPERTY_CODE"], "OFFERS_SORT_FIELD" => $arParams["OFFERS_SORT_FIELD"], "OFFERS_SORT_ORDER" => $arParams["OFFERS_SORT_ORDER"], "OFFERS_SORT_FIELD2" => $arParams["OFFERS_SORT_FIELD2"], "OFFERS_SORT_ORDER2" => $arParams["OFFERS_SORT_ORDER2"], "OFFERS_LIMIT" => $arParams["LIST_OFFERS_LIMIT"], "SECTION_ID" => $arResult["VARIABLES"]["SECTION_ID"], "SECTION_CODE" => $arResult["VARIABLES"]["SECTION_CODE"], "SECTION_URL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["section"], "DETAIL_URL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["element"], 'CONVERT_CURRENCY' => $arParams['CONVERT_CURRENCY'], 'CURRENCY_ID' => $arParams['CURRENCY_ID'], 'HIDE_NOT_AVAILABLE' => $arParams["HIDE_NOT_AVAILABLE"], 'LABEL_PROP' => $arParams['LABEL_PROP'], 'ADD_PICT_PROP' => $arParams['ADD_PICT_PROP'], 'PRODUCT_DISPLAY_MODE' => $arParams['PRODUCT_DISPLAY_MODE'], 'OFFER_ADD_PICT_PROP' => $arParams['OFFER_ADD_PICT_PROP'], 'OFFER_TREE_PROPS' => $arParams['OFFER_TREE_PROPS'], 'PRODUCT_SUBSCRIPTION' => $arParams['PRODUCT_SUBSCRIPTION'], 'SHOW_DISCOUNT_PERCENT' => $arParams['SHOW_DISCOUNT_PERCENT'], 'SHOW_OLD_PRICE' => $arParams['SHOW_OLD_PRICE'], 'MESS_BTN_BUY' => $arParams['MESS_BTN_BUY'], 'MESS_BTN_ADD_TO_BASKET' => $arParams['MESS_BTN_ADD_TO_BASKET'], 'MESS_BTN_SUBSCRIBE' => $arParams['MESS_BTN_SUBSCRIBE'], 'MESS_BTN_DETAIL' => $arParams['MESS_BTN_DETAIL'], 'MESS_NOT_AVAILABLE' => $arParams['MESS_NOT_AVAILABLE'], 'TEMPLATE_THEME' => (isset($arParams['TEMPLATE_THEME']) ? $arParams['TEMPLATE_THEME'] : ''), "ADD_SECTIONS_CHAIN" => "N", 'ADD_TO_BASKET_ACTION' => $basketAction, 'SHOW_CLOSE_POPUP' => isset($arParams['COMMON_SHOW_CLOSE_POPUP']) ? $arParams['COMMON_SHOW_CLOSE_POPUP'] : '', 'COMPARE_PATH' => $arResult['FOLDER'].$arResult['URL_TEMPLATES']['compare'] ), $component );?> |
это первая проблема, вторая проблема это умный фильтр, его вызываю конечно раньше того что описано выше, в принципе всё из стандартного шаблона из версии 15.
| Код |
|---|
if ($arParams['USE_FILTER'] == 'Y')
{
$arFilter = array(
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"ACTIVE" => "Y",
"GLOBAL_ACTIVE" => "Y",
);
if (0 < intval($arResult["VARIABLES"]["SECTION_ID"]))
{
$arFilter["ID"] = $arResult["VARIABLES"]["SECTION_ID"];
}
elseif ('' != $arResult["VARIABLES"]["SECTION_CODE"])
{
$arFilter["=CODE"] = $arResult["VARIABLES"]["SECTION_CODE"];
}
$obCache = new CPHPCache();
if ($obCache->InitCache(36000, serialize($arFilter), "/iblock/catalog"))
{
$arCurSection = $obCache->GetVars();
}
elseif ($obCache->StartDataCache())
{
$arCurSection = array();
if (Loader::includeModule("iblock"))
{
$dbRes = CIBlockSection::GetList(array(), $arFilter, false, array("ID"));
if(defined("BX_COMP_MANAGED_CACHE"))
{
global $CACHE_MANAGER;
$CACHE_MANAGER->StartTagCache("/iblock/catalog");
if ($arCurSection = $dbRes->Fetch())
{
$CACHE_MANAGER->RegisterTag("iblock_id_".$arParams["IBLOCK_ID"]);
}
$CACHE_MANAGER->EndTagCache();
}
else
{
if(!$arCurSection = $dbRes->Fetch())
$arCurSection = array();
}
}
$obCache->EndDataCache($arCurSection);
}
if (!isset($arCurSection))
{
$arCurSection = array();
}
if ($verticalGrid)
{
?>
<div class="col-md-4 col-sm-12 col-xs-12 smart-filter-float-right"><?
}
?><?
pr($arCurSection);
//if ($arCurSection['ID']==0) unset($arCurSection['ID']);
$APPLICATION->IncludeComponent(
"bitrix:catalog.smart.filter",
"",
array(
//"SHOW_ALL_WO_SECTION" => "Y",
"IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"SECTION_ID" => $arCurSection['ID'],
"FILTER_NAME" => $arParams["FILTER_NAME"],
"PRICE_CODE" => $arParams["PRICE_CODE"],
"CACHE_TYPE" => $arParams["CACHE_TYPE"],
"CACHE_TIME" => $arParams["CACHE_TIME"],
"CACHE_GROUPS" => $arParams["CACHE_GROUPS"],
"SAVE_IN_SESSION" => "N",
"FILTER_VIEW_MODE" => $arParams["FILTER_VIEW_MODE"],
"XML_EXPORT" => "Y",
"SECTION_TITLE" => "NAME",
"SECTION_DESCRIPTION" => "DESCRIPTION",
'HIDE_NOT_AVAILABLE' => $arParams["HIDE_NOT_AVAILABLE"],
"TEMPLATE_THEME" => $arParams["TEMPLATE_THEME"],
// "BREND"=>$breand,
// "SECTION_ID_FILTER" => $arResult['VARIABLES']['SECTION_ID'],
),
$component,
array('HIDE_ICONS' => 'Y')
);
|
если раскоментировать первую строчку параметров компонента "SHOW_ALL_WO_SECTION" => "Y”, то свойства товаров появляются в умном фильтре, но фильтр по прежнему не работает., и ещё нужно чтобы в фильтре не было возможности фильтровать товары по тому свойству по которому уже произведена выборка.
В идеале ещё нужно чтобы bitrix:catalog.section.list выводил количество товаров в подкатегориях только для этого бренда. и при нажатии на категорию мы переходили в неё и там бы отображались товары так же отсортированные по бренду.
Подскажите в какую сторону копать?
Всем заранее спасибо за помощь и затраченное время.
p.s. при выводе категорий товаров стандартным способом всё работает прекрасно и фильтр и сравнение и добавление в корзину.