Создаю новый пользовательский компонент
В каталоге bitrix/components создала папку klient для создания собственных компонентов.
Создала папку нового компонента filter.
В каталоге компонента:
файл .description.php
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
$arComponentDescription = array(
"CACHE_PATH" => "Y",
);
?>
файл .parameters.php
<?
if(!defined("B_PROLOG_INCLUDED")||B_PROLOG_INCLUDED!==true)die();
$arComponentParameters = array(
'PARAMETERS' => array(
'CACHE_TIME' => array('DEFAULT'=>3600),
),
);
?>
файл component.php
<?
if(CModule::IncludeModule("iblock"))
{
// в информационном блоке IBLOCK_ID=22 находятся названия брендов,
// получаю список существующих брендов.
// Правильнее воспользоваться функцией GetIBlockElementListEx, которая получит бренды, используемые в данном разделе
// функция GetList получит все бренды, которые есть в справочнике.
$arFilter = Array("IBLOCK_ID"=>22, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", "INCLUDE_SUBSECTIONS"=>"Y");
$items = CIBlockElement::GetList(Array(), $arFilter, false, false,array("ID","NAME"));
while ($enum_fields = $items->GetNext())
$arResult['BREND'][] = array(
"ID" => $enum_fields["ID"],
"NAME" => $enum_fields["NAME"],
);
}
$arResult["FORM_ACTION"] = isset($_SERVER['REQUEST_URI'])? htmlspecialchars($_SERVER['REQUEST_URI']): "";
$this->IncludeComponentTemplate();
?>
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
$arComponentDescription = array(
"CACHE_PATH" => "Y",
);
?>
папка images - для картинок.
папка templates -
папка шаблона .default
файлы
style.css
.filter_name {margin: 10px;font-weight: bold;background-color: #F1F5FA;}
.filter_submit {margin: 20px 10px;}
template.php
<form action="<?$APPLICATION->GetCurDir();?>" method="GET">
<p class="filter_name">Бренд:</p>
<p class="filter_check">
<?foreach ($arResult['BREND'] as $key =>$brend):?>
<input type="checkbox" name="brend[]" value=<?=$brend['ID']?> <?if(@( in_array($brend['ID'], $_SESSION["brend"]))):?> checked <?endif?>><?=$brend['NAME']?><br>
<?endforeach;?>
</p>
<p class="filter_submit">
<input type="submit" value="Фильтр" name="set_f">
<input type="submit" value="Сбросить" name="del_f">
</p>
</form>
Компонент встраиваю в footer.php шаблона. Он будет работать в правой колонке
<?
$ttt = explode("/",$APPLICATION->GetCurDir());
$razdel = $ttt[1];
if ($razdel == "product_catalogue" || $razdel == "ready_catalogue"){
//фильтр по товарам
$APPLICATION->IncludeComponent("klient:filter", ".default", array(
"CACHE_TIME" => "3600"
),
false
);
}
?>
В разделе каталога товаров стоит комплексный компонент bitrix:catalog.
Мне нужно, чтобы фильтр сохранялся постоянно при переходе на страницы каталога.
Фильтр сохраняю в сессиях.
В настройках компонента указываю массив для сохранения фильтра arrFilterCat.
Если включен компонент фильтра в комплексном компоненте, он обнуляет глобальную переменную фильтра arrFilterCat.
Если отключить работу фильтра в комплексном компоненте, тогда массив $GLOBALS['arrFilterCat'] можно заполнять перед загрузкой комплексного компонента.
Если компонент фильтра включен, массив заполняю в файле section.php перед запуском компонента bitrix:catalog.section
if(!$GLOBALS['arrFilterCat']) GLOBAL $arrFilterCat;
if (isset($_GET["set_f"]))
{ $_SESSION["brend"] = $_GET['brend'];
}
if (isset($_SESSION["brend"])) $arrFilterCat['PROPERTY_BREND'] = $_SESSION['brend'];
if (isset($_GET["del_f"]))
{ unset($_SESSION["brend"]);
unset($arrFilterCat['PROPERTY_BREND']);
}
Последние новости
Блюда из теста
Ватрушки постные Приготовить опару из 2 стаканов муки, теплой воды и дрожжей. Когда поднимется, всыпать соль, перемешать, добавить растертое с сахаром растительное масло, ароматическое масло или тертую ваниль, остальную муку и замесить тесто. Когда тесто подойдет, свернуть его в колбаску, нарезать на кусочки, раскатать из них маленькие лепешк...Читать далее »
Блюда из морепродуктов
Кальмары с красным вином Тщательно промыть и очистить кальмаров (голову выбросить, щупальца оставить). Порезать на колечки, обсушить (можно использовать абсорбирующую бумагу). На большой сковороде подогреть масло. Положить мелко нарезанный лук и натертый чеснок и жарить до мягкости. Добавить колечки кальмаров и тушить, пока они не приобретут к...Читать далее »
Блюда из рыбы
Солянка из рыбы, приготовленная на сковороде Очищенную и выпотрошенную рыбу вместе с кожей нарезать на небольшие кусочки, ошпарить и смыть с поверхности свернувшийся белок. Затем положить ее в смазанную маслом кастрюлю или казанок, добавить измельченные огурцы (без кожицы и семян), обжаренный до золотистого цвета лук, немного сливочного масла,...Читать далее »
Выпечка
Пирог с черникой Для теста: 350 г муки, 2 чайные ложки разрыхлителя (углекислый аммоний), соль на кончике ножа, 150 г свиного смальца или маргарина, несколько ложек холодной воды. Для начинки: 500 г черники, 2 столовые ложки муки, 1 стакан сахара, 2 столовые ложки сливочного масла. Муку, соль и разрыхлитель смешать с жиром, постепенн...Читать далее »
Блюда из теста. Часть 2
Блины заварные постные С вечера гречневую муку и половину пшеничной заварить 2 ½ стакана кипятка, быстро мешая, чтобы получилось густое тесто. Когда остынет, добавить еще 1 ½ стакана теплой воды и разведенные в 1/3 стакана воды дрожжи. Оставить на ночь в теплом месте. На следующий день ввести остальную муку, соль, сахар, выбить тесто лопаточкой, ч...Читать далее »
Выпечка. Часть 6
Булочки с яблочным повидлом 4 булочки, 2 стакана густого яблочного повидла, 1–2 столовые ложки изюма, сахар и корица. Срезать с булочек верхнюю часть, вынуть середину и заполнить образовавшуюся пустоту повидлом, смешанным с изюмом. Посыпать сахаром с корицей и запечь в смазанной маслом форме или на сковороде в нежаркой духовке. Юбилейны...Читать далее »
Выпечка. Часть 5
Чайный пирог 500 г пшеничной муки, 200 мл молока, 50 г дрожжей, 100 г сливочного масла, 100 г сахара, 2 желтка, 5 г соли. Для ореховой массы: 100 г орехов, 120 г сахара, 75 г сливочного масла, 25 мл воды. Для заварного крема: 200 мл молока, 75 г сахара, 2 яйца, 25 г пшеничной муки, 150 г сливочного масла, ванильный сахар. Опарное тес...Читать далее »