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


Правила форума

Внимание!!! Если не можете скачать, пожалуйста ознакомьтесь с условиями получения доступа с файлам форума. Правила форума


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


Сообщений в теме: 185

#181 Den

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

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

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

Немного изменил запрос, вроде бы работает как надо:
    $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 добавлены так как по ним происходит сортировка

#182 badisoft

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

  • Assistent vsupport.ru
  • PipPipPip
  • 5 072 сообщений
Репутация: 783
Мастер

Отправлено 11 мая 2018 - 11:21

Цитата

Может связано с каким-то обновлением 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 (вставить вместо вышележащих трех строк)


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

#183 Den

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

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

Отправлено 10 января 2019 - 14:16

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

#184 badisoft

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

  • Assistent vsupport.ru
  • PipPipPip
  • 5 072 сообщений
Репутация: 783
Мастер

Отправлено 15 января 2019 - 15:46

Просмотр сообщенияDen сказал:

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

#185 R.Sergey

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

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

Отправлено 15 января 2019 - 16:24

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

#186 makki

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

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

Отправлено Сегодня, 12:22

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