[minishop2-combo-colors] - вариация поля цвета
Краткая инструкция как добавить на страницу продукта поле с выбором цвета.

данное поле модификация родного поля опций github.com/bezumkin/miniShop2/blob/master/assets/components/minishop2/js/mgr/misc/ms2.combo.js#L236-L283 с небольшими изменениями.
необходимые действия:
— добавляем поле с помощью плагина
— мапа
— регистрируем поле в msproductdata.js
— вывод на странице продукта
вызов

данное поле модификация родного поля опций github.com/bezumkin/miniShop2/blob/master/assets/components/minishop2/js/mgr/misc/ms2.combo.js#L236-L283 с небольшими изменениями.
необходимые действия:
— добавляем поле с помощью плагина
— мапа
array(
'fields' => array(
'colors' => null
),
'fieldMeta' => array(
'colors' => array(
'dbtype' => 'text',
'phptype' => 'json',
'null' => true,
)
)
); — указываем xtype поля minishop2-combo-colors— регистрируем поле в msproductdata.js
miniShop2.combo.Colors = function (config) {
config = config || {};
var html = ''
+'<span style="background:#{value};width: 45px;height: 15px;display: inline-block;border-radius: 2px;"></span>'
+'<span> {value}</span>';
Ext.applyIf(config, {
xtype: 'superboxselect',
allowBlank: true,
msgTarget: 'under',
allowAddNewData: true,
addNewDataOnBlur: true,
pinList: false,
resizable: true,
name: config.name || 'tags',
anchor: '100%',
minChars: 1,
store: new Ext.data.JsonStore({
id: (config.name || 'tags') + '-store',
root: 'results',
autoLoad: false,
autoSave: false,
totalProperty: 'total',
fields: ['value'],
url: miniShop2.config['connector_url'],
baseParams: {
action: 'mgr/product/getoptions',
key: config.name
}
}),
mode: 'remote',
displayField: 'value',
valueField: 'value',
triggerAction: 'all',
extraItemCls: 'x-tag',
expandBtnCls: 'x-form-trigger',
clearBtnCls: 'x-form-trigger',
displayField: config.displayField || html,
displayFieldTpl: config.displayFieldTpl || html,
tpl: new Ext.XTemplate(''
+'<tpl for="."><div class="x-combo-list-item">'
+ html
+'</div></tpl>',{
compiled: true
})
});
config.name += '[]';
Ext.apply(config, {
listeners: {
newitem: function(bs, v) {
bs.addNewItem({value: v});
},
},
});
miniShop2.combo.Colors.superclass.constructor.call(this, config);
};
Ext.extend(miniShop2.combo.Colors, Ext.ux.form.SuperBoxSelect);
Ext.reg('minishop2-combo-colors', miniShop2.combo.Colors);
miniShop2.plugin.colors = {
getFields: function(config) {
return {
colors: {xtype: 'minishop2-combo-colors', description: '<b>[[+colors]]</b>'}
}
}
};— вывод на странице продукта
вызов
{'!msOptions'|snippet:[
'options' => 'colors',
'tpl' => 'tpl.msOptions.color'
]}чанк tpl.msOptions.color{foreach $options as $name => $values}
<div class="form-group">
<label class="col-md-2 control-label" for="option_{$name}">{('ms2_product_' ~ $name) | lexicon}:</label>
<div class="col-md-10">
{foreach $values as $value index=$index}
<div class="radio-inline pull-left">
<label class="input-parent">
<input type="radio" name="options[{$name}]" value="{$value}" {$index ? '' : 'checked'}>
<img alt="" title="{$value}" class="img-rounded" style="background-color:#{$value};width:25px;height:25px;">
</label>
</div>
{/foreach}
</div>
</div>
{/foreach} Комментарии: 23
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Но как теперь это вывести в карточке и в фильтре не пойму.
Не сочтите за наглость, хоть направьте, куда копать.
Спасибо!
Белый экран вместо карточки
И вот сдесь прописываем нужный шаблон который будет похож на tpl.msOptions.color?
вы получите список значений цвета.
затем скопируйте чанк tpl.mFilter2.filter.checkbox под другим названием и укажите в вызове его.
вот его уже и подгоняйте по типу tpl.msOptions.color
по селекту например гуглится вот codepen.io/DanWebb/pen/zxxQwJ
Просто сроки поджимают, ну не идет в голову…
Так поле в БД забыли добавить.
Выполните
я создал все необходимые файлы в core/components/minishop2/plugins/colors
содержимое index.php
содержимое msproductdata.inc.php
содержимое msproductdata.js
в таблице modx_ms2_products создал поле colors
в системных настройках в ms2_product_extra_fields дописал через запятую colors
В словари добавил и описание и заголовки, но у товара это поле так и не появилось
В «журнале ошибок» вот на что ругается, но я так понял что это не относиться к плагину
но к сожалению это не помогло, видимо что то ещё я не так сделал)