Фильтр по дополнительным свойствам

#
Фильтр по дополнительным свойствам
(редакция Халява 6.1.2)
Есть инфосистемы, с подгруппами, и под-под группами и т.д.
У элементов есть допсвойства, например производитель, вес, цена и т.д.

Каталог сделал специально на инфосистемах, т.к. в магазине много лишнего, мне нужно только вывести каталог с его элементами, галлереей фоток и описанием. Да и прикрутить фильтр.

Можно конечно отфильтровать на уровне xsl, но если товаров будет очень много, то думаю это не целесообразно, итаки еле ползает система.

Причем информационных систем много, и у каждой свои допсвойтства и свой отдельный фильтр.

Код вывода фильтра сделал в шаблонах, каждый на свою инфосистему.
Фильтр представляет из себя html форму, которая при сабмите отправляет на тот же самый урл.

В тдс получилось при обнаружении GET параметров не показывать папки с группами, а все позиции из всех подгрупп.

Затык в том, что не могу грамотно присобачить запрос к querbuilder, как сформировать запрос?
Left join, Like что-то там, когда id какого-то там свойства совпадает с содержащимся в таблице.

Но там же не в той же самой таблице, а отдельно в структурах, откуда что брать идентификаторы.. непоняятно.

В-общем я немного застрял, подскажите как реализовать можно.

p.s. перерыл весь форум, нашел много решений, но они все про 5ю версию hostcms.
Нашел решение в тдс интернет-магазина, но оно не работает, не подгоняется под инфосистему.
#
Re: Фильтр по дополнительным свойствам
Получилось сделать вот так:
(но id искомого элемента пока вставил напрямую, а мне надо что-бы id вычислялся по имени, которое приходит через GET-параметр. Можно конечно передавать id через get, но светить на клиентской стороне параметрами из БД не очень хочется)

(тдс инфосистемы->ейный код)
<?php

$Informationsystem_Controller_Show = Core_Page::instance()->object;

$xslName = $Informationsystem_Controller_Show->item
   ? Core_Array::get(Core_Page::instance()->libParams, 'informationsystemItemXsl')
   : Core_Array::get(Core_Page::instance()->libParams, 'informationsystemXsl');


if(!empty($_GET['sort']) && $_GET['sort']=='true'){
   $Informationsystem_Controller_Show->group(FALSE);
   $Informationsystem_Controller_Show->groupsMode('none');
}


$Informationsystem_Controller_Show
->informationsystemItems()
   ->queryBuilder()
      ->leftJoin('informationsystem_item_properties', 'informationsystem_items.informationsystem_id', '=', 'informationsystem_item_properties.informationsystem_id')
         ->leftJoin('property_value_ints', 'informationsystem_items.id', '=', 'property_value_ints.entity_id',
         array(
         array('AND' => array('informationsystem_item_properties.property_id', '=', Core_QueryBuilder::expression('`property_value_ints`.`property_id`')))
         )
         )

//отбор по производителю
->where('informationsystem_item_properties.property_id', '=', 77)
->where('property_value_ints.value', '=',249);


$Informationsystem_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName($xslName)
   )
   ->itemsProperties(TRUE)
   ->show();



где 249 это id элемента инфосистемы, у меня в допвойствах товара выводится список производителей, берущихся списком из инфосистемы.
Авторизация