Фильтрация инфосистем по дополнительным полям

#
Фильтрация инфосистем по дополнительным полям
Подскажите, пожалуйста, как реализовать следующую задачу:

Необходимо сделать фильтрацию инфосистемы (каталога товаров) по
дополнительным свойствам (полям) элемента типа "список".

На странице отображения предполагается сделать выпадающие меню с возможностью выбора элементов списка, причем выбрать можно одновременно из нескольких меню  (например, поле1: элемент2; поле2: элемент3 ...)

Очевидно, что для этого необходимо передавать переменные (выбранные элементы) в xsl-шаблон - каким образом можно получить доступ к этим переменным в xsl-шаблоне ?

pincode: 321
Hello, World!
#
Re: Фильтрация инфосистем по дополнительным полям
Параметры передал через массив $external_propertys

А вот как можно получить - отобразить с помощью xsl структуру "Списки" (чтобы сделать фильтры по этим элементам)?
Hello, World!
Модератор
#
Re: Фильтрация инфосистем по дополнительным полям
Дмитрий писал(а):
Необходимо сделать фильтрацию инфосистемы (каталога товаров) по
дополнительным свойствам (полям) элемента типа "список".

в API ознакомьтесь с параметрами метода ShowInformationSystem,пример фильтрации описан в API

Дмитрий писал(а):
На странице отображения предполагается сделать выпадающие меню с возможностью выбора элементов списка, причем выбрать можно одновременно из нескольких меню  (например, поле1: элемент2; поле2: элемент3 ...)

передавайте нужные элементы и выводите из через XSL
#
Re: Фильтрация инфосистем по дополнительным полям
C примером в API ознакомился ... кстати, нашел пару очепяток:
"11     $elemenr['value'] = '2005-12-23 00:00:00';"
"19     $elemenr['value'] = '2005-12-23 00:00:00';"

К сожалению, из этого примера не понятно, как можно использовать (отобразить на экране с помощъю xsl) структуру типа "Список"! :evil:

Это ведь не Инфосистема! У нее есть собственный класс с методами.
Я попытался использовать метод lists::GetList(id) и передать его в структуру через массив $external_propertys ($external_propertys['list'] = lists::GetList(1) но в результате в структуре получил только идентификатор ресурса <list>Resource id #108</list>!

Как получить список этементов???
Hello, World!
Модератор
#
Re: Фильтрация инфосистем по дополнительным полям
Дмитрий писал(а):
C примером в API ознакомился ... кстати, нашел пару очепяток:

большое спасибо, поправили.

Дмитрий писал(а):
К сожалению, из этого примера не понятно, как можно использовать (отобразить на экране с помощъю xsl) структуру типа "Список"!

Вы делаете фильтр, поясните, пожалуйста, для каких целей Вам отображать список? практическое значение. Вам нужно с помощью XSL шаблона построить некий список из значений?
#
Re: Фильтрация инфосистем по дополнительным полям
Приведу конкретный пример:
У меня есть "Каталог товаров" - Проекты загородных домов.
У элементов есть дополнительные свойства

  1. материал (типа "Список"

    • дерево
    • кирпич
    • газобетон

  2. площадь (типа "Список"

    • до 200 кв.м
    • от200 до 500 кв.м
    • более 500 кв.м

  3. цокольный этаж (типа "Список"

    • есть
    • нет



На странице отображения всех элеметов каталога необходимо сделать фильтрацию по дополнительным свойствам "материал", "площадь", "цокольный этаж".
Фильтры должны быть оформлены в виде выпадающих меню:
<form action="" method="post">
Материал:
<select name="материал" onchange="this.form.submit()">
<option>дерево</option>
...
</select>
Площадь:
<select name="площадь" onchange="this.form.submit()">
<option>до 200 кв. м.</option>
...
</select>
Цокольный этаж:
<select name="цокольный_этаж" onchange="this.form.submit()">
<option>есть</option>
<option>нет</option>
</select>
</form>
При изменении одного из фильтров (выборе значения элемента в меню), станица перезагружается, и значения фильтров передаются через $_POST на эту же страницу. Далее они подставляются в функцию  ShowInformationSystem через массив $property['select']['element'] - это понятно!

Я, конечно, могу сделать эти меню статическими (вручную перечислить все элементы)

НО, хотелось бы, чтобы они были именно динамическими, т.е. при добавлении/изменении элементов списков - элементы меню менялись автоматически. Для этого необходимо получать список элементов типа "Список".
Метод lists::GetList(id) возвращает ссылку на идентификатор ресурса, а что мне делать с этим ресурсом? Как, с помощью каких методов, можно получить массив элементов?
Hello, World!
Модератор
#
Re: Фильтрация инфосистем по дополнительным полям
Дмитрий писал(а):
Метод lists::GetList(id) возвращает ссылку на идентификатор ресурса, а что мне делать с этим ресурсом? Как, с помощью каких методов, можно получить массив элементов?


получите список элементов через $resource = lists::SelectListsItems($list_id);

while ($row = mysql_fetch_assoc($resource))
{
var_dump($row);
}
#
Re: Фильтрация инфосистем по дополнительным полям
Спасибо!
Я, честно говоря, надеялся, что существует какой-нибудь метод типа ShowList ...
Но ... и этого
HostCMS писал(а):

$resource = lists::SelectListsItems($list_id);
while ($row = mysql_fetch_assoc($resource))
{
var_dump($row);
}

вполне достаточно
Hello, World!
#
Re: Фильтрация инфосистем по дополнительным полям
А как осуществить вывод? Можно подробнее. У меня тоже незадачка с фильтром ИС. Как организовать фильтр с трудом понимаю. Если можно выложите кусок кода для получения данных, и кусок для их обработки шаблона
#
Re: Фильтрация инфосистем по дополнительным полям
wildthing, см. пример: http://www.hostcms.ru/forums/17/878/
Авторизация