mFilter2 фильтрация tv

Доброго времени суток подскажите такой момент у ресурса есть tv art по этому полю делаю фильтрацию с помощью mFilter2 все работает но мне нужно что бы при вводе в поле art допустим 2020 находило ресурсы у которых art 2020 и 2020_1, 2020_2 и тд.
eflit
22 ноября 2024, 13:51
modx.pro
139
0
Поблагодарить автора Отправить деньги

Комментарии: 3

Артур Шевченко
22 ноября 2024, 20:33
0
Фильтрация как правило предполагает точное совпадения значений, а тебе нужен поиск.
Alexey
28 ноября 2024, 18:01
0
Так делал на одном проекте, нужно было добавить поиск по полю pagetitle. Думаю, что можно и на TV переделать.

<?php
class myCustomFilter extends mse2FiltersHandler {

    public function buildPagetitleFilter(array $values, $name = '') {
        
        $tmp = array_keys($values);
        if (empty($values) || (count($tmp) < 2 && empty($this->config['showEmptyFilters']))) {
            return array();
        }

        return array(
            array(
                'value' => strip_tags($_GET[$name]),
                'type' => 'string',
                'resources' => $ids,
                'name' => $name,
            )
        );
    }

    public function filterPagetitle(array $requested, array $values, array $ids, $check_recurs = false) {

        $matched = array();
        $pagetitle = trim(implode(',', $requested));
        $tmp = array_flip($ids);

        foreach ($values as $key => $resources) {
            if (strpos(mb_strtolower($key), mb_strtolower($pagetitle)) !== false) {
                foreach ($resources as $id) {
                    if (isset($tmp[$id])) {
                        $matched[] = $id;
                    }
                }
            }
        }
        return $matched;
    }    
}

вызывается так:
'filters' => 'resource|pagetitle:pagetitle',

Чанк фильтра:
{var $key = $table ~ $delimeter ~ $filter}
<input type="text" placeholder="Введите название..." value="{$value}" name="{$filter_key}" id="mse2_{$key}_{$idx}" class="pagetitle-input" autocomplete="off">
==========

Но тут момент: если много ресурсов, то может начать тормозить. Так что нужно тестить. На том проекте ресуросов в пределах 500-700 было, фильтровало норм.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    3