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

Как вывести минимальное и максимальное значение характеристики ?

  • 03 августа 2017 г. , редакция: 03 августа 2017 г.
  • Всем привет!
    Нужно добавить в input минимальные и максимальные значения характеристик из выборки товаров в данной категории.

    http://joxi.ru/n2YXg45Cjee1Rm

    Спасибо!

  • 03 августа 2017 г. , редакция: 03 августа 2017 г.
  • Когда делал вывод этих значений через ползунок, у меня был такой код:
    Код
    <div data-label-reasult="" data-min="10" data-max="50000" data-unit="" class="slider-range-price" data-value-min="1000" data-value-max="5000"></div>

    Но, это зависит от того, как у вас реализовано.
    А ниже, уже вывод input-ов:
    Код
    <div class="amount-range-price">От
    <input type="text" class="from form-price" id="min_price" name="pr1" value="'.$result["price"]["value1"].'">
    до &nbsp;-&nbsp;
    <input type="text" class="to form-price" id="max_price" name="pr2" value="'.$result["price"]["value2"].'">
    </div>
    • 03 августа 2017 г. , редакция: 03 августа 2017 г.
    • как я понял править надо shop.view.show_search.php

      строка 174. по умолчанию прописано следующее.
      Код
      case 'numtext':
      echo '
      <span class="input-title">'.$row["name"].':</span>
      <div>
      <input type="text" class="from" name="p'.$row["id"].'_1" value="'. $row["value1"].'">
      &nbsp;-&nbsp;
      <input type="text" class="to" name="p'.$row["id"].'_2" value="'.$row["value2"].'">
      </div>';
      break;


      заменил на ваш код. чего-то не работает...
      • 03 августа 2017 г. , редакция: 03 августа 2017 г.
      • Алексей нужно делать запрос в базу данных из модели, а уже после выводить значение в инпут.
        В shop.model.php в конец класса show_search
        Код
        $result['pricebounds'] = DB::query_fetch_array('SELECT min(price) AS min, max(price) AS max FROM {shop} AS s JOIN {shop_price} AS p ON s.id=p.good_id WHERE currency_id=0 AND s.cat_id IN ('.implode(', ',$cat_ids).')');


        А в инпуты вставляете, уже куда нужно, переменные
        Код
        $result['pricebounds']['min'] и $result['pricebounds']['max']


        Все что выше относится только к цене, к характеристикам у меня реализовано так.
        В файле shop.view.show_search.php

        Привожу часть кода, откуда ясно что нужно взять.
        Код
        foreach($result["rows"] as $row){
        $countDiv[$t] .= '<div class="js_shop_search_param shop_search_param shop_search_param'.$row["id"].'" cat_ids="'.$row["cat_ids"].'">';
        switch($row["type"]){
        case 'numtext':
        $value_filtr_id1 = 'p'.$row["id"].'_1';
        $value_filtr_id2 = 'p'.$row["id"].'_2';
        $result['parambounds'] = DB::query_fetch_all("SELECT e.value1 AS value FROM {shop_param} AS s JOIN {shop_param_element} AS e JOIN {shop_param_category_rel} AS p ON s.id='".$row['id']."' WHERE e.param_id=s.id AND s.id=p.element_id AND type='numtext' AND e.trash='0'");
        $parambounds = array();
        foreach($result['parambounds'] as $row_parambounds){
        $parambounds[] = (int) $row_parambounds['value'];
        }
        $parambounds_min = min($parambounds);
        $parambounds_max = max($parambounds);

        $countDiv[$t] .= '<span class="input-title">'.$row["name"].' ('.$row['measure_unit'].')'.':</span>
        <div class="wrap_filter_block_min_max">
        <div class="flexBetween">';
        $countDiv[$t] .= '<input type="text" id="minCost" class="input_filter_text-number filter_elInput_toFrom" value="';
        if(!empty($_GET[$value_filtr_id1])){
        $countDiv[$t] .= $_GET[$value_filtr_id1];
        }else{
        $countDiv[$t] .= round($parambounds_min);
        }
        $countDiv[$t] .= '" name="p'.$row["id"].'_1" value="'.$row["value1"].'" data_min_value="'.$parambounds_min.'" >';
        $countDiv[$t] .= '<div class="filter_elLine">-</div>';
        $countDiv[$t] .= '<input type="text" id="maxCost" class="input_filter_text-number filter_elInput_toFrom" value="';
        if(!empty($_GET[$value_filtr_id2])){
        $countDiv[$t] .= $_GET[$value_filtr_id2];
        }else{
        $countDiv[$t] .= round($parambounds_max);
        }
        $countDiv[$t] .= '" name="p'.$row["id"].'_2" value="'.$row["value2"].'" data_max_value="'.$parambounds_max.'" >';
        $countDiv[$t] .= '</div>';
        $countDiv[$t] .= '<div id="price_slider-range"></div>';
        $countDiv[$t] .= '</div>';
        break;

        case 'checkbox':
        $countDiv[$t] .= '<span class="input-title">Необходимо:</span>';
        $countDiv[$t] .= '
        <input type="checkbox" id="shop_search_p'.$row["id"].'" name="p'.$row["id"].'" value="1"'.($row["value"] ? " checked" : '').'>
        <label for="shop_search_p'.$row["id"].'">'.$row["name"].'</label>';
        break;

        case 'multiple':
        case 'select':
        $countDiv[$t] .= '<span class="input-title">'.$row["name"].':</span>';
        $countDiv[$t] .= '<select class="chosen-select" multiple="multiple" data-placeholder="Выберите" name="p'.$row["id"].'[]">';
        foreach ($row["select_array"] as $key => $value){
        $countDiv[$t] .= '<option value="'.$key.'"'.(in_array($key, $row["value"]) ? " selected" : '').'>'.$value.'</option>';
        }
        $countDiv[$t] .= '</select>';
        break;
        }


        Пример тут: http://impreza-profi.ru/kosmetologicheskoe-oborudovanie/kosmetologicheskie-kresla/
        Единственное я потом передумал выводить в поиск числовые характеристики, поэтому можно увидеть только цену.
      • 04 августа 2017 г.
      • Это же не весь код. Там завязано ещё на JS.
        А привёл часть кода, для примера, естественно что работать он не будет.

Новости

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

Форум