mFilter2 - как с помощью двух опции minishop2 сделать select с группировкой?
Здравствуйте.
Второй день мучаюсь, как реализовать так, чтобы msoption|model (Текстовое поле)
выводились группированные по опции: msoption|marka (Текстовое поле)?
tpl.mFilter2.filter.model
Второй день мучаюсь, как реализовать так, чтобы 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>
Комментарии: 1
Решил проблему частично, с помощью скрипта:
tpl.mFilter2.filter.option
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));
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.