Зависимые фильтры 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