Jump to content


Photo
- - - - -

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


  • This topic is locked This topic is locked
15 replies to this topic

#11 Cheren-dow

Cheren-dow
  • JBZoo User (rus)
  • User rate: 95.7
  • posts: 5060
  • topics: 31

Posted 15 December 2015 - 16:38

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


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

#12 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 16 December 2015 - 11:00

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

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

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

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

  1. foreach ($propsValues as $propsValue) {
  2.  
  3. $class = '';
  4. if ($this->_isActive($identifier, $propsValue['value'])) {
  5. $link = $jbrouter->filter($identifier, $propsValue['value'], $params['moduleParams'], 2);
  6. $class = ' class="active"';
  7. } else {
  8. $link = $jbrouter->filter($identifier, $propsValue['value'], $params['moduleParams'], ($isDepend ? 1 : 0));
  9.  
  10. $linkExclude = $jbrouter->filter($identifier, $propsValue['value'], $params['moduleParams'], ($isDepend ? 1 : 0), true);
  11. }
  12.  
  13. // render html list item
  14. $html[] = '<li' . $class . '><a href="' . $link . '" title="' . $this->_escape($propsValue['value']) . '" rel="nofollow"><span>'
  15. . $this->_escape($propsValue['value']) . ' '
  16. . (($showCount) ? '<span class="element-count">(' . $propsValue['count'] . ')</span>' : '')
  17. . '</span></a>'
  18. . ($class ? '': '<a rel="nofollow" href="' . $linkExclude . '">Исключ.</a>')
  19. . ($class ? '<a rel="nofollow" href="' . $link . '" class="cancel">&nbsp;</a>' : '')
  20. . '</li>';
  21. }
Далее нужно новый параметр использовать в генерации ссылки
shz8_200x0.png

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



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


#13 RDG

RDG
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0.5
  • posts: 296
  • topics: 88

Posted 16 December 2015 - 11:07

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


  • 0

#14 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 16 December 2015 - 11:10

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



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


#15 RDG

RDG
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0.5
  • posts: 296
  • topics: 88

Posted 16 December 2015 - 13:38

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

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

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


  • 0

#16 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 17 December 2015 - 07:02

RDG, on 16 Dec 2015 - 12:38, said:

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

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

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

  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!