Перейти к содержимому


Фотография
- - - - -

Фильтр наоборот


  • Закрытая тема Тема закрыта
Сообщений в теме: 15

#11 Cheren-dow

Cheren-dow

Отправлено 15 December 2015 - 16:38

RDG, первоначальная проверка на данный хак(1 и 2 вариант) пока результатов не дала. Очень много файлов нужно изменять. Отписался Денису, возможно он что то по советует.


  • 0
Изображение
 

#12 SmetDenis

SmetDenis

Отправлено 16 December 2015 - 11:00

Как я понимаю, речь идет о модуле Search list

Можно рискнуть сделать такой хак

В файле media\zoo\applications\jbuniversal\framework\helpers\jbfilterprops.php
происходит рендеринг

Делаем вот такие вещи
- добавляем в генерацию ссылки новый параметр
- выводим ссылку
4fp8_200x0.png

            foreach ($propsValues as $propsValue) {

                $class = '';
                if ($this->_isActive($identifier, $propsValue['value'])) {
                    $link  = $jbrouter->filter($identifier, $propsValue['value'], $params['moduleParams'], 2);
                    $class = ' class="active"';
                } else {
                    $link = $jbrouter->filter($identifier, $propsValue['value'], $params['moduleParams'], ($isDepend ? 1 : 0));

                    $linkExclude = $jbrouter->filter($identifier, $propsValue['value'], $params['moduleParams'], ($isDepend ? 1 : 0), true);
                }

                // render html list item
                $html[] = '<li' . $class . '><a href="' . $link . '" title="' . $this->_escape($propsValue['value']) . '" rel="nofollow"><span>'
                    . $this->_escape($propsValue['value']) . ' '
                    . (($showCount) ? '<span class="element-count">(' . $propsValue['count'] . ')</span>' : '')
                    . '</span></a>'
                    . ($class ? '': '<a rel="nofollow" href="' . $linkExclude . '">Исключ.</a>')
                    . ($class ? '<a rel="nofollow" href="' . $link . '" class="cancel">&nbsp;</a>' : '')
                    . '</li>';
            }
Далее нужно новый параметр использовать в генерации ссылки
shz8_200x0.png

и обработать в фильтре, в файле
media\zoo\applications\jbuniversal\framework\models\jbmodel.element.php
stko_200x0.png
        if ($this->app->jbrequest->get('filter_exclude') == 1) {
            $where = 'NOT (' . $where . ')';
        }
Использовать код для точного (_getWhereExact) и не точного поиска (_getWhereLike)
 
Я не уверен что это полностью рабочий метод.
Но мои пару тестов сработали.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#13 RDG

RDG

Отправлено 16 December 2015 - 11:07

А если у меня чекбоксы характериктик товара выводятся? Обычный Jbzoo Search?


  • 0

#14 SmetDenis

SmetDenis

Отправлено 16 December 2015 - 11:10

По сути тоже самое, только параметр filter_exclude нужно добавить в форму поиска а не в jbrouter
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#15 RDG

RDG

Отправлено 16 December 2015 - 13:38

Ничё не понял((

То есть будет работать или так или так?

А если одновременно надо эти решения?


  • 0

#16 SmetDenis

SmetDenis

Отправлено 17 December 2015 - 07:02

То есть будет работать или так или так?

Модель (класс из файла jbmodel.element.php), которая отвечает за поиск одна и та же в обоих случаях.

Но так как фильтры разные (по ссылкам или формой) то дополнительную переменную filter_exclude нужно добавлять в разных местах.
Если речь идет о модуле, который выводит ссылки, то менять jbrouter.php
Если форма, то нужно добавить filter_exclude=1 через скрытое поле в форму

<input type="hidden" name="filter_exclude" value="1">
Например, в шаблон
modules\mod_jbzoo_search\tmpl\<шаблон>.php
или сюда как ключ значение
\modules\mod_jbzoo_search\tmpl\_hidden.php
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.





Click to return to top of page in style!