Jump to content


Photo
- - - - -

Уменьшить количество найденных товаров

teaser search

Best Answer SmetDenis , 05 November 2014 - 13:00

Тогда в _getSearchSelect

добавьте что-то вроде такого

$select
    ->where('(tSku.total * ' . $chPrice . ') < ?', $max_price)
    ->where('(tSku.total * ' . $chPrice . ') > ?', $min_price);

Делать исключения в шаблонах - это большие костыли.

Go to the full post


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

#1 Alexan

Alexan
  • JBZoo User (rus)
  • User rate: 0
  • posts: 128
  • topics: 43

Posted 30 October 2014 - 09:21

Вопрос будет хитроват, но попробую объяснить попроще.
 
при поиске (модуль JBZoo search), выводится список товаров (teaser.php) и вверху количество найденных товаров. - это все стандартно.
 
В моем тизере, перед тем как вывести товар есть условие примерно такое:
if ( $var_user == $var_item ) echo teaser;
 
$var_user - переменная из профиля юзера;
$var_item - значение итем;
 
получается Найдено: 10 товаров;
но т.к. некоторые не отобразились, показывает только 5 например.
 
Вопрос: как уменьшить количество найденных товаров на те, что не попали в условие в тизере. т.е чтобы было Найдено 5 товаров.
 
Сразу скажу, что вставить в фильтр $var_user и таким образом отфильтровать запросом в базу не получится, т.к. условие там сложнее, с % и прочей лабудой.

  • 0

#2 Sliapy

Sliapy
  • JBZoo User (rus)
  • User rate: 50.5
  • posts: 6393
  • topics: 15

Posted 30 October 2014 - 10:46

Как вариант: через jquery считать кол-во выведенных тизеров и заменять "Найдено: 10 товаров" этим кол-вом "на лету".


  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]

#3 Alexan

Alexan
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 128
  • topics: 43

Posted 30 October 2014 - 13:44

Как вариант: через jquery считать кол-во выведенных тизеров и заменять "Найдено: 10 товаров" этим кол-вом "на лету".

 

да, но пагинация!?? 


Edited by Alexan, 30 October 2014 - 13:45.

  • 0

#4 Sliapy

Sliapy
  • JBZoo User (rus)
  • User rate: 50.5
  • posts: 6393
  • topics: 15

Posted 30 October 2014 - 19:38

Изначально ворос стоял: "как уменьшить количество найденных товаров на те, что не попали в условие в тизере. т.е чтобы было Найдено 5 товаров".

 

А так - только перепиливать ядро самого Zoo.


  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]

#5 Alexan

Alexan
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 128
  • topics: 43

Posted 30 October 2014 - 21:31

Sliapy, наверное я не совсем правильно тогда сформулировал вопрос.

 

Возможно не в самом тизере нужно делать условие, а где-то раньше, когда уже есть объект итема из которого можно взять поля для условия, но еще нет подсчета кол-ва и пагинации.

 

Я не против и ядро подправить, если подскажите в каком месте. Вам ведь виднее структура конструктора.

 

Вопрос тогда такой: где прописать условия для не отображения некоторых тизеров (по условиям), чтобы верно показывалось общее количество товаров?

Или такой: как посчитать общее количество найденных поиском итемов, если некоторые нужно скрыть и не считать соответственно?


  • 0

#6 SmetDenis

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

Posted 03 November 2014 - 09:12

SQL - запрос фильтра формируется в файле
jbuniversal\framework\models\jbmodel.filter.php _getSearchSelect()

добавить условие можно как то так
$select->where('field = ?', $value);
Если бы я знал больше о условиях вывода материалов, то сказал бы больше.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



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


#7 Alexan

Alexan
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 128
  • topics: 43

Posted 04 November 2014 - 18:50

Если бы я знал больше о условиях вывода материалов, то сказал бы больше.
 

 

Например условие такое: 

$chPrice = 3 (это в профиле пользователя)

$new_price = $price_item*$chPrice;

$min_price, $max_price - значение диапазона по числам в фильтре

 

if( $new_price > $min_price && $new_price < $max_price ) echo $item;

 

т.е. ищем в пределах диапазона, но смотрим не саму цену, а ее значение измененное на величину, заданную в профиле юзером.


  • 0

#8 SmetDenis

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

Posted 05 November 2014 - 13:00   Best Answer

Тогда в _getSearchSelect

добавьте что-то вроде такого

$select
    ->where('(tSku.total * ' . $chPrice . ') < ?', $max_price)
    ->where('(tSku.total * ' . $chPrice . ') > ?', $min_price);

Делать исключения в шаблонах - это большие костыли.


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



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






Also tagged with one or more of these keywords: teaser, search

Click to return to top of page in style!