• Авторизация


Создание пользовательского фильтра на 1C Bitrix 02-12-2011 18:42 к комментариям - к полной версии - понравилось!


Создаю новый пользовательский компонент

В каталоге 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']);

}

     

вверх^ к полной версии понравилось! в evernote
Комментарии (2):
02-10-2012-13:05 удалить
Очень интересно. Приглашаю почитать мои блоги http://blogs.mail.ru/mail/monetniydvorcom/ http://monetniydvor.blog.ru/
05-10-2012-06:31 удалить
Очень интересно. Приглашаю почитать мои блоги http://blogs.mail.ru/mail/monetniydvorcom http://monetniydvor.blog.ru/ http://www.liveinternet.ru/users/monetniydvor


Комментарии (2): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Создание пользовательского фильтра на 1C Bitrix | Алина_Галина - Мама и сын | Лента друзей Алина_Галина / Полная версия Добавить в друзья Страницы: раньше»