Зависимые фильтры Java script

Настраиваю зависимые фильтры mFilter(из компонента mSearch2) для сайта на modx.

Есть скрипт который отлично отрабатывает зависимые фильтры, при условии, что в карточке товара есть опция марка (Ford) и модель (Ford Galaxy). То есть название модели - содержит марку введите сюда описание изображения

При выборе определенной марки появляется select, и option отлично срабатывает

У меня большая база товаров и нет возможности её изменить (изменить название модели на марка + модель)

Вопрос: как создать условие которое проверяет есть ли в админке в опциях товара у данной марки (К примеру Ford) модель (Galaxy)? То есть при таких условиях: введите сюда описание изображения Текущий скрипт

<script>
  var modelFilter = {
    // Наши селекторы
    options: {
        marka: '#mse2_msoption\\|marka',
        model: '#mse2_msoption\\|model',
    },
    // Запуск функции
    initialize: function() {
        $this = this;
        // Получаем нужные элементы исохраняем как свойства объекта
        this.marka = $(this.options['marka']);
        this.model = $(this.options['model']);

        // Смотрим в параметры адресной строки на предмет выбранной марки
        var params = mSearch2.Hash.get();
        // Если нет - отключаем модели
        if (params['marka'] == undefined) {
            $this.disableModel();
        }
        // Если есть - включаем
        else {
            $this.enableModel();
        }

        // Вешаем обработчик на изменение марки
        this.marka.find('select').on('change', function() {
            // Если что-то выбрано, то включаем модели
            if ($(this).val() != '') {
                // Переключем модель на первый пункт "Выберите из списка"
                $this.model.find('option:first').attr('selected', true);
                // И активируем блок
                $this.enableModel();
            }
            // Если нет - отключаем
            else {
                $this.disableModel();
            }
        })
    },

    // Функция отключения моделей
    disableModel: function() {
        // Ищем все поля с непустым value
        $this.model.find('option[value!=""]').attr('selected', false).attr('disabled', true);
        // И прячем весь блок
        $this.model.hide();
    },

   // Функция включения моделей
    enableModel: function() {
        // Получаем марку автомобиля
        var marka = this.marka.find(':selected').text().replace(/\(.*?\)$/, '').replace(/\s+$/, '');
        var re = new RegExp('^' + marka);
        // Пробегаем по всем моделям и проверяем имя
        $this.model.find('option').each(function() {
            var $this = $(this);
            // Имя не совпадает - нужно отключить эту модель
            if (!$this.text().match(re) && $this.prop('value') != '') {
                $this.attr('disabled', true);
                $this.hide();
            }
            // В противном случае - включить
            else {
                $this.attr('disabled', false);
                $this.show();
            }
        });
        // И показываем весь блок с моделями
        $this.model.show();
    },
}

// Скрипт запускается после полной загрузки документа
$(document).ready(function() {
    // И если на странице есть фильтры
    if ($('#mse2_mfilter').length > 0) {
        modelFilter.initialize();
    }
});
</script>

Все до чего додумался пока, дальше не понимаю логику, хотя может и это некорректно.

    options: {
      marka: '#mse2_msoption\\|marka',
      model: '#mse2_msoption\\|model',
      totalModel: '#mse2_tv\\|marka' + ' ' +'#mse2_tv\\|model'
    }

Прошу помощи, спасибо! За основу взял информацию из docs.modx.pro/komponentyi/msearch2/tipovyie-resheniya/zavisimyie-filtryi


Ответы (0 шт):