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

Фильтр по товарам с наличием скидки

  • 22 сентября 2017 г.
  • Всем привет!

    Может кто то уже делал или просто подскажет как сделать.
    Нужно сделать чтобы с помощью фильтра можно было отфильтровывать товары у которых есть скидка, в сущности мне достаточно просто URL который формирует такой список товаров.
    • 22 сентября 2017 г. , редакция: 22 сентября 2017 г.
    • Можно ставить галочку Акция и делать фильтр по ней
      • 22 сентября 2017 г.
      • Надо фильтровать не по лейблу акция, а по наличию скидки назначенной в модуле скидок.
        • 22 сентября 2017 г. , редакция: 22 сентября 2017 г.
        • через $row в списке можно получить $row["old_price"], вроде.

          и в shop.view.row.php делать проверку.
          Код

          if(isset($_GET["old_price"])) {

          if($row["old_price"]) {
          //шаблон
          }

          } else {
          ...
          }


          можно поставить галочку что выврдить все товары на главной странице и писать там /shop/?old_price=true
    • 22 сентября 2017 г.
    • Во вьюхе формы поиска хардкодим например чекбокс - товары со скидкой Например
      Код
      <input type="checkbox" name="discount" />


      Дальше в модельке в функции where после:

      Код


      if (!empty($_REQUEST["pr1"]) || !empty($_REQUEST["pr2"]))
      {
      if (!empty($_REQUEST["pr1"]))
      {
      $pr1 = $this->diafan->filter($_REQUEST, "int", "pr1");
      $getnav .= '&pr1='.$pr1;
      }
      if (!empty($_REQUEST["pr2"]))
      {
      $pr2 = $this->diafan->filter($_REQUEST, "int", "pr2");
      $getnav .= '&pr2='.$pr2;
      }
      $where_param .= " INNER JOIN {shop_price} AS pr ON pr.good_id=s.id AND pr.trash='0'"
      ." AND pr.date_start<=".time()." AND (pr.date_start=0 OR pr.date_finish>=".time().")"
      ." AND pr.currency_id=0"
      ." AND pr.role_id".($this->diafan->_users->role_id ? " IN (0,".$this->diafan->_users->role_id.")" : "=0")
      ." AND (pr.person='0'".($this->person_discount_ids ? " OR pr.discount_id IN(".implode(",", $this->person_discount_ids).")" : "").")";
      $group = ", pr.price_id HAVING"
      .(!empty($_REQUEST["pr1"]) ? " MIN(ROUND(pr.price))>=".$pr1 : '')
      .(!empty($_REQUEST["pr2"]) ? (!empty($_REQUEST["pr1"]) ? " AND" : "")." MIN(pr.price)<=".$pr2 : '');
      }
      else
      {
      $where_param .= " LEFT JOIN {shop_price} AS pr ON pr.good_id=s.id AND pr.trash='0'"
      ." AND pr.date_start<=".time()." AND (pr.date_start=0 OR pr.date_finish>=".time().")"
      ." AND pr.currency_id=0"
      ." AND pr.role_id".($this->diafan->_users->role_id ? " IN (0,".$this->diafan->_users->role_id.")" : "=0")
      ." AND (pr.person='0'".($this->person_discount_ids ? " OR pr.discount_id IN(".implode(",", $this->person_discount_ids).")" : "").")";
      }



      пишем что-то вроде:

      Код

      if (!empty($_REQUEST['discount'])) {

      $where_param .= ' AND pr.discount_id !=0';

      }



      Соображал на по быстрому, но работать должно. Удачи!
      • 22 сентября 2017 г.
      • Скидка может быть и вручную указана как Старая цена
        • 22 сентября 2017 г.
        • Код

          AND (pr.discount_id !=0 OR pr.old_price !=0)

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум