Вход • Регистрация

Фильтр, характеристики, И/ИЛИ

  • 20 апреля 2018 г.
  • В поиск выводится несколько характеристик с множественным выбором. При выборе в фильтре нескольких значений одной характеристики результаты фильтруются по логике ИЛИ, то есть если совпадает любое из значений. Если же выбрать несколько значений из РАЗНЫХ характеристик, то результаты фильтруются по логике И, то есть если совпадают оба значения.

    Задача состоит в том, чтобы сделать при выборе значений из определенных характеристик (внутри группы характеристик) результаты выводились принципу ИЛИ.

    Сформулирую пример для сайта с одеждой, выбрали в фильтре:

    1. размеры 48, 50
    2. Тип одежды: Брюки
    3. Дизайн: Под джинсу
    4. Цвет: Синий, Голубой

    Результат получили: "размеры 48 или 50" И "Брюки" И "Под джинсу ИЛИ Синий ИЛИ Голубой"

    К сожалению у поискового фильтра для характеристик поиск сделан не через OR/AND, а через INNER JOIN (OR/AND только для галочек).

    Было решение -- объединить две характеристики в одну, условно говоря получить много вариаций на тему "Голубые джинсы", "Синие Джинсы" и т.д. Но 6-ка диафана отказывается выводить значения в фильтр, видимо слишком много (около 150), если кто-то знает как снять это ограничение - тоже вариант для нас.

    Буду рад полезным советам.

    p.s. скуль не умеет "FULL OUTER JOIN", но вариант переходить на Postage из-за этого не рассматриваем :)
    • 21 апреля 2018 г.
    • На самом деле FULL OUTER JOIN можно эмитировать через UNION двух запросов в MySQL.
      Например есть пример тут
      Согласен выглядит страшновато, но "на безрыбье и рак рыба".
    • 23 апреля 2018 г.
    • На самом деле решений множество.

      В public function list_search() приходит $_POST с параметрами запроса. Как вариант, можно сформировать не один запрос для всех задействованных характеристик, как в дефолте, и получить INNER JOIN между ними, а сформировать запрос для каждой характеристики в отдельности. То есть получите несколько запросов к базе данных. Далее остается просто объединить полученные результирующие ряды, исключая повторения элементов. На выходе получите тот же FULL JOIN. Таким образом все это можно прокрутить в public function list_search(), не внося каких-либо серьезных изменений в код, что позволит в дальнейшем спокойно обновлять cms без каких либо усилий.

Новости

  • 19 сентября, пятница
  • Мы внесли изменения в лицензию и объявляем, что прекращаем техническую консультационную поддержку сайтов на DIAFAN.CMS версий старше 7.0. А это все минорные версии платформы, предшествующие актуальной линейке, а именно: версии серии 4.x, 5.x, 6.x.
  • 15 сентября, понедельник
  • У нас отличные новости! Мы выпустили новую сборку DIAFAN.CMS 7.3, которая включает встроенные нейросети непосредственно в административной панели. Это значит, что создание контента для вашего сайта больше не будет проблемой — искусственный интеллект возьмет эту задачу на себя, избавляя вас от необходимости привлекать копирайтеров или тратить время на написание текстов самостоятельно.
  • 25 марта
  • Мы обновили систему тарифов, учитывая опыт работы с клиентами и современные рыночные условия. Новая тарифная сетка разработана специально для того, чтобы лучше отвечать вашим потребностям. Резкого повышения цен не произошло. Более того, некоторые тарифы даже стали выгоднее и доступнее. 

Блоги

  • 10.09.2025
  • DIAFAN.CMS славится нагрузоустойчивостью и безопасностью, про инциденты со взломом сайта на нашей системе давненько не слышали, но недавно получили мы письмо от fstec.ru такого характера:

    Обнаружена уязвимость в CMS-системе DIAFAN, позволяющая нарушителю, действующему удалённо, красть сессионные куки через XSS-атаку.

Форум