Фильтрация по производителям

#
Фильтрация по производителям
Здравствуйте, вопрос: нужно реализовать фильтрацию сразу по нескольким производителям (например как в яндекс.маркете , расставляем чекбоксы на производителях и жмем применить и получаем товары выбранных производителей
#
Re: Фильтрация по производителям
vrtc, в демонстрационной реализации магазина подобной фильтрации по нескольким производителям нет. Но реализовать возможно. Для начала нужно будет в коде XSL-шаблона для списка товаров в форме фильтра вместо выпадающего списка выводить производителей в виде чекбоксов, затем нужно будет в коде типовой динамической страницы для магазина переделать имеющуюся там стандартно обработку пришедшего с формы фильтра параметра, содержащего идентификатор выбранного пользователем производителя($_GET['producer_id']), на то, чтобы учитывались несколько идентификаторов одновременно. Например:
/* Ограничиваем по производителю */
if (...)
{
/*ЗДЕСЬ НЕОБХОДИМО СФОРМИРОВАТЬ МАССИВ $in, СОДЕРЖАЩИЙ ИДЕНТИФИКАТОРЫ ПРОИЗВОДИТЕЛЕЙ, ВЫБРАННЫХ ПО СРЕДСТВОМ ЧЕКБОКСОВ В ФОРМЕ ФИЛЬТРА*/
$element['type'] = 0; // 0 - основное св-во, 1 - дополнительное
$element['name'] = 'shop_producers_list_id';
$element['prefix'] = 'AND'; // префикс
$element['if'] = ' IN ('.$in.') ';
$element['value'] = '';
$element['sufix'] = '';
$param['select'][] = $element;

/* Применять фильтр */
$external_propertys['apply_filter'] = true;
}

#
Re: Фильтрация по производителям
Спасибо Наталья, попробую
#
Re: Фильтрация по производителям
Кому интересно, то в php я это реализовал вот так, может немного некрасиво, но работает

/* Ограничиваем по производителю */
      if (to_int($_GET['producer_id'][0]))
      {
      $string = '';
         foreach ($_GET['producer_id'] as $key => $value) {
         $string .= ",$value";
         }
         $string = substr($string, 1);

         $element['type'] = 0; // 0 - основное св-во, 1 - дополнительное
         $element['name'] = 'shop_producers_list_id';
         $element['prefix'] = 'AND'; // префикс
         $element['if'] = ' IN ('.$string.') '; // Условие
            $element['value'] = '';
         $element['sufix'] = '';
         $param['select'][] = $element;
#
Re: Фильтрация по производителям
не смог только разобраться как быть с атрибутом selected для выбранных производителей
Стандартный код не работает:
         
<option value="{@id}">
            <xsl:if test="@id = /shop/producer_id">
               <xsl:attribute name="selected">да </xsl:attribute>
            </xsl:if>
            <xsl:value-of disable-output-escaping="yes" select="shop_producers_list_name"/>
         </option>


прошу вашей помощи
#
Re: Фильтрация по производителям
ну во1х, так:
<xsl:attribute name="selected">selected</xsl:attribute>

А во вторых, у тега select нужно указать атрибиут multiple
<select multiple="multiple">...</select>


А в3х, у вас возможно неправильно работает вот это условие
<xsl:if test="@id = /shop/producer_id">
потому что если у вас выбрано несколько производителей, то надо и в xml передавать их все, и проверку делать по группе узлов.
Заказов не беру. Консультирую редко.
#
Re: Фильтрация по производителям
первые два я сделал, это понятно, а вот с третьим не очень понятно, как передавать в xml и как проверку делать по группе.
В Get у меня передается вот так producer_id[]=46&producer_id[]=42
#
Re: Фильтрация по производителям
vrtc писал(а):
не очень понятно, как передавать в xml
- передавать нужно средствами PHP, т.е. в коде тип. дин. страницы магазина. Можно сформировать XML-дерево, содержащее идентификаторы выбранных производителей(полученных методом GET), и передать его в метод ShowShop через параметр $param['external_xml'], например, дерево:
<producers_selected>
<producer>12</producer>
<producer>34</producer>
<producer>56</producer>
</producers_selected>

После чего информацию из этого дерева нужно обработать в коде XSL-шаблона: отметить в списке тех производителей, идентификаторы которых есть внутри producers_selected.
#
Re: Фильтрация по производителям
понятно.... то что ни чего не понятно.
придется писать в поддержку, ни кто не может объяснить внятно
#
Re: Фильтрация по производителям
vrtc писал(а):
ни чего не понятно
- ничего не понятно не бывает. Что конкретно вызывает затруднения? По пунктам.
vrtc писал(а):
ни кто не может объяснить внятно
- внятнее будет только предоставление готового кода, разработка которого даже в рамках технической поддержки не осуществляется.
Авторизация