Страница 1 из 1

Фильтрация по одному значению, а не по нескольким

Добавлено: 01.04.2017, 21:30
alexneuro
Проблема в следующем. При выборе фильтра, к примеру объем 10мл, первый раз к url прибавляется obiem-10ml. Если после этого выбрать 30мл, то к тому url прибавится 30ml, то есть будет url ...obiem-10ml_30ml. Таким образом фильтр показывает как товары 10мл, так и 30мл. Подскажите, как можно сделать так, чтобы url всегда менялся по выбранному фильтру для конкретного значения. в файле features.tpl фильтр формируется следующим образом:
{foreach $f->options as $o}
<option {if $smarty.get.{$f@key} && in_array($o->translit,$smarty.get.{$f@key})} selected{/if} value="{furl params=[$f->url=>$o->translit, page=>null]}">{$o->value|escape}</option>
{/foreach}

Добавлено: 02.04.2017, 06:37
korshunov
ProductsView.php

Вместо
$result_array['features'][$k][] = $v;
вставляйте
$result_array['features'][$k][0] = $v;

А вообще, ИМХО, Ваш вопрос - классический пример того, как хороший фильтр с богатыми возможностями превратить в заурядный...

Добавлено: 09.04.2019, 10:23
softmobidev
подскажите пожалуйста как в версии 2.3.2 такое сделать? там поменялся код теперь такого нет как вы написали :(

Добавлено: 03.06.2019, 12:30
softmobidev
никто не знает как это исправить в новой версии?

Добавлено: 03.06.2019, 16:22
reteri
строка 389

Добавлено: 04.06.2019, 11:06
softmobidev
по брендам получилось, сделал вот так

Код: Выделить всё

$result_array['brand'][0] = $param_values;


а по фильтрам непонятно, там и filter и features теперь есть, что за что отвечает?

389 строка это вот

Код: Выделить всё

if(!empty($result_array['filter'])) {
            if(count($result_array['filter']) > $this->max_filter_filter) {
                $seo_hide_filter = true;
            }
            $filter_params_count ++;
            $result_string .= '/filter-' . implode("_", $result_array['filter']);
        }


но это я так понял "хиты продаж" в категориях, это немного не то