Фильтрация в mFilter2

Добрый вечер!
Возникла проблема такого характера: есть каталог с фильтрацией с помощью mFilter2. Одна группа фильтров почему-то перебивает остальные. Если выбран один фильтр из этой группы, то выборка остальных никак не влияет на результат — страница перезагружается, а результаты не меняются. В чем может быть проблема?
Спасибо!

UPD:
Спасибо за отклики, но проблему удалось решить самостоятельно.
Естественно опишу ее решение здесь.

У меня в ресурсах находилась таблица MIGX из 7 строк, где каждая строка это определенный тип товара со своими характеристиками (название типа было первым элементом каждой строки). Фильтрация ресурсов необходима была по типам товаров. Опираясь на данный вариант bezumkin.ru/modx/minishop2/msearch2/1805/ мной был написан свой класс фильтрации для таблицы:

<?php
class myCustomFilter extends mse2FiltersHandler {
    public function buildTypeWFilter(array $values, $name = '') {
        if (count($values) < 2 && empty($this->config['showEmptyFilters'])) {
            return array();
        }
        $results = array();
        foreach ($values as $value => $ids) {
            $items = json_decode($value, true);
            foreach($items as $key => $value2){
                $results[$value2['type']] = array(
                    'title' => $value2['type'],
                    'value' => $value2['type'],
                    'type' => 'typeW',
                    'resources' => $ids
                );
            }
        }
        ksort($results);
        return $results;
    }

    public function filterTypeW(array $requested, array $values, array $ids) {
        $matched = array();
        foreach ($requested as $value) {
            foreach ($values as $vkey => $val){
                $fil = json_decode($vkey, true);
                foreach ($fil as $t) {
                    if (trim($t['type']) === trim($value)) {
                        $matched[] = $val[0];
                    }
                }
            }
        }
        return $matched;
    }
}
Фильтрация работала, но при этом если выбран элемент из моего фильтра, то выбор в других группах фильтров никак не влиял на результат.
Дело оказалось в одной переменной, которая была пропущена по неопытности — $ids. Она содержала в себе ресурсы, выборка которых происходит по другим фильтрам. Соответственно мне надо было находить пересечение массива $ids с результатом работы моего фильтра. Иначе у меня выводился результат работы только моего фильтра, без учета предыдущих:

return array_intersect($matched, $ids);
Если это кому-то помогло — я рад)
Всем спасибо!
Александр
22 мая 2015, 17:30
modx.pro
1
1 454
0

Комментарии: 3

Сергей Скат
22 мая 2015, 20:37
1
0
дай посмотреть
    Александр
    25 мая 2015, 11:50
    -1
    я извиняюсь — что именно мне показать?
    код выложить?
    как наглядно показать проблему?
      Сергей Скат
      25 мая 2015, 22:26
      0
      ссылку на сайт дай где не работает, то что ты описываешь достаточно мистично, надо посмотреть
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    3