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


Еще один фильтр. Теперь на AJAX.


  • Вы не можете ответить в тему
Сообщений в теме: 187

#181 Den

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 117 сообщений
Репутация: 0
Начинающий

Отправлено 11 May 2018 - 08:44 AM

Немного изменил запрос, вроде бы работает как надо:
    $data = db_query("SELECT productID, in_stock, sort_order, Price, name
                  FROM (SELECT productID, in_stock, sort_order, Price, name, COUNT(DISTINCT optionID) AS count 
                      FROM ".PRODUCTS_OPTIONS_SET_TABLE."
                      JOIN ".PRODUCTS_TABLE." USING(productID)
                      WHERE enabled=1 AND Price>=$price_from AND Price<=$price_to AND $addonCat$addonStock$addonSearch AND variantID IN (".implode(',',$search).")
                      GROUP BY productID
                      ) AS t
                  WHERE t.count=$POSTcount ORDER BY $filtersort");

Поля in_stock, sort_order, Price, name добавлены так как по ним происходит сортировка
  • 0

#182 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 11 May 2018 - 11:21 AM

Может связано с каким-то обновлением mysql?

Да. На 5.6 (и выше) старый запрос не работает правильно.
У меня такие правки для 5.6:

# BEGIN для SQL 5.6 (вставить вместо нижележащих двух строк)
# $data = db_query("SELECT productID, in_stock, customers_rating, Price, name, sort_order
# FROM (SELECT productID, in_stock, customers_rating, Price, name, sort_order, COUNT(DISTINCT optionID) AS count
# END для SQL 5.6 (вставить вместо нижележащих двух строк)
$data = db_query("SELECT productID
FROM (SELECT productID, COUNT(DISTINCT optionID) AS count
FROM ".PRODUCTS_OPTIONS_SET_TABLE."
JOIN ".PRODUCTS_TABLE." AS p USING(productID)
WHERE enabled=1 AND Price>=$price_from AND Price<=$price_to AND $addonCat$addonStock$addonSearch$addonCisfo AND variantID IN (".implode(',',$search).")
GROUP BY productID
ORDER BY $filtersort) AS t
WHERE t.count=$POSTcount");
# BEGIN для SQL 5.6 (вставить вместо вышележащих трех строк)
# GROUP BY productID) AS t
# WHERE t.count=$POSTcount
# ORDER BY $filtersort");
# END для SQL 5.6 (вставить вместо вышележащих трех строк)

  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#183 Den

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 117 сообщений
Репутация: 0
Начинающий

Отправлено 10 January 2019 - 02:16 PM

badisoft, у вас нет доработки этого фильтра, чтобы выбранные опции фиксировались в url и соответственно можно было отправлять ссылку на такую отфильтрованную страницу и при переходе в товар и возврате на страницу фильтра также сохранялись опции отмеченные ранее?
  • 0

#184 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 15 January 2019 - 03:46 PM

чтобы выбранные опции фиксировались в url

Это принципиально невозможно в AJAX-фильтре.
Как же они будут "фиксироваться в url", если показ результатов фильтра происходит без перезагрузки страницы, т.е. без смены url?
Тут только если в подгружаемом контенте добавить что-то типа "прямая ссылка на результат работы фильтра" и отрабатывать эту ссылку.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#185 R.Sergey

    Администратор

  • Администраторы
  • 2794 сообщений
Репутация: 332
Мастер

Отправлено 15 January 2019 - 04:24 PM

badisoft, На самом деле ты ошибаешься, это возможно. В адрессную строку можно подставлять сгенерированную ссылку на результаты фильтра. Главное ее сгенерировать и чтобы разумеется она была рабочая. Например https://complaneta.c...nakopiteli-usb/ - вот здесь так реализован каталог (НЕ фильтр). При переходе в категорию товары подгружаются аяксом, но при этом ссылка меняется ну и разумеется индексируется.
  • 0

#186 makki

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 147 сообщений
Репутация: 7
Начинающий

Отправлено 17 January 2019 - 12:22 PM

Еще один вариант: не перегружать каждый раз страницу, а сделать кнопку применить
  • 0

#187 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 25 January 2019 - 07:56 AM

В адрессную строку можно подставлять сгенерированную ссылку на результаты фильтра.

Как? Я не знаю.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#188 ssergioss25

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 56 сообщений
Репутация: 24
Ассистент
  • ГородСПБ

Отправлено 29 January 2019 - 01:54 PM

В адрессную строку можно подставлять сгенерированную ссылку на результаты фильтра.

Как? Я не знаю.

history.pushState

  • 2