Добрый день! Пытаюсь применить технологию отложенных функций на одном из проектов. Суть естить каталог товаров, для списка товаров сделал фильтрацию по меткам "Новинка" и "Распродажа" следующим образом. В код вызова компонента catalog.section добавил параметр из GET массива
Код |
---|
...
"SECTION_LABEL" => $_GET["label"],
...
|
затем в файле result_modifier.php проверяю переданный параметр $arParams["SECTION_LABEL"] и фильтрую массив $arResult["ITEMS"], удаляя из него элементы "не новинки" или "не в распродаже". Можт быть ситуация при которой $arResult["ITEMS"] останется пустым и мне нужно будет убрат со страницы всё (включая умный фильтр вызываемый выше по коду от catalog.section). Решил воспользоваться отложенной функцией. Для этого в init.php добавл 3 функции:
Код |
---|
$sectionResult = 0;
function sectionResult($r=0){
global $APPLICATION;
return $APPLICATION->AddBufferContent("getMySectionResult");
}
function setSectionResult($r){
global $sectionResult;
$sectionResult = $r;
}
function getMySectionResult(){
global $sectionResult;
return $sectionResult;
}
|
файле component_epilog.php проверяю если товаров после фильтрации не осталось, то я устанавливаю флаг $sectionResult:
Код |
---|
if(count($arResult["ITEMS"])<=0)
{
setSectionResult(1);
}
|
а в файле section.php комплексного компонента bitrix:catalog ставлю проверку:
Код |
---|
if(!sectionResult()) { ... |
и пытаюсь к этой проверки привязаться, чтобы в случае пустого $arResult["ITEMS"] не выводить умный фильтр и список товаров, а вывести предупреждающее сообщение. Но ничего не выходит. Во первых этот код if(!sectionResult()) { выводит в тело страницы цифру 1. Т.е. он не просто проверку делает в if() а непосредственно выводит её на страницу. Во вторых он выводи 1-цу постоянно, даже если товары есть в $arResult["ITEMS"].
Что не так?
P.S. воспользоваться умным фильтром для реализации такой фильтрации не представляется возможным в силу замудрённой вёрстки проекта.