mFilter2 - как с помощью двух опции minishop2 сделать select с группировкой?

Здравствуйте.
Второй день мучаюсь, как реализовать так, чтобы msoption|model (Текстовое поле)
выводились группированные по опции: msoption|marka (Текстовое поле)?

[[!mFilter2?
    &element=`msProducts`
    &parents=`10`
    &tpl=`tpl.msProducts_auto.row`
    &setMeta=`1`
    &filters=`msoption|model`
    &aliases=`msoption|model==model`
    &tplFilter.outer.default=`tpl.mFilter2.filter.select`
    &tplFilter.row.model=`tpl.mFilter2.filter.model`
]]

tpl.mFilter2.filter.model
<optgroup label="{$msoption|marka}"> 
    <option value="{$value}" {$selected} {$disabled} class="{$disabled}">{$title} ({$num})</option>
</optgroup>

Сергей
07 сентября 2019, 21:53
modx.pro
54
0

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

Сергей
11 сентября 2019, 16:25
0
Решил проблему частично, с помощью скрипта:
tpl.mFilter2.filter.option
{var $title = $.php.explode('||',$title)}
<option value="{$value}" {$selected} {$disabled} class="{$disabled}" data-mark="{$title[0]}">
{$title[1]}  {if $num}({$num}){/if}
</option>
jquery:
const $select = $('#msoption\\|auto_filter_mark_0');
const groups = $select.find('option')
 .get()
 .filter(n => n.value)
 .reduce((acc, n) => ((acc[n.dataset.mark] = acc[n.dataset.mark] || []).push(n), acc), {});
    
Object.entries(groups).forEach(n => $(`<optgroup label="${n[0]}">`).append(n[1]).appendTo($select));
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
1