[РЕШЕНО] Показать/скрыть кастомные свойства товара в админке для одного шаблона товара в зависимости от категории
Добый день. Возникла задача — настраивать какие свойства товара (в том числе и дополнительные) будут отображаться в админке для менеджера при использовании одного шаблона товара в зависимости от того в какой категории находится товар.
Хотел бы спросить совет у старших коллег по цеху — насколько мой вариант «живуч» и есть ли какие-то альтернативы?
В метод getFileds в файле msproductdata.js для расширения админки при создании плагина товара miniShop2
можно передать параметр config в котором хранится вся информация о текущем товаре (в том числе и id родителя). Чем я и воспользовался:
И да, я понимаю что оно не совсем универсальное, так как при динамическом добавлении категорий/подкатегорий этот метод не подходит, но если количество категорий статично, то это лучшее что я смог придумать без дополнительных компонентов. Поиски решения подобной проблемы привели меня только сюда, но там какие-то совсем экзотические методы предложены.
Буду признателен за любую конструктивную критику или подсказку другого решения, которое лучше подойдёт для данной задачи.
UPD
Нашел вот такой более изящный и правильный способ — через твшку для родителя-категории и плагин который в админке подменяет значение системной настройки ms2_product_extra_fields. Оказывается, нужно просто было хорошо поискать.
Хотел бы спросить совет у старших коллег по цеху — насколько мой вариант «живуч» и есть ли какие-то альтернативы?
В метод getFileds в файле msproductdata.js для расширения админки при создании плагина товара miniShop2
можно передать параметр config в котором хранится вся информация о текущем товаре (в том числе и id родителя). Чем я и воспользовался:
miniShop2.plugin.customProperties = {
getFields: function (config) {
if (config.record['parent']=='7') {
// Для категории-родителя "Картины" с id = 7 выводим
// только необходимые дополнительные свойства.
return {
style: {
xtype: 'minishop2-combo-autocomplete',
description: '<b>[[+style]]</b><br />' + _('ms2_product_style_help')
},
author: {
xtype: 'minishop2-combo-autocomplete',
description: '<b>[[+author]]</b><br />' + _('ms2_product_author_help')
}
}
}
if (config.record['parent']=='8') {
// Для категории-родителя "Рамы для картин" с id = 8 выводим
// только необходимые дополнительные свойства.
return {
length: {
xtype: 'numberfield',
decimalPrecision: 2,
description: '<b>[[+length]]</b><br />' + _('ms2_product_length_help')
},
width: {
xtype: 'numberfield',
decimalPrecision: 2,
description: '<b>[[+width]]</b><br />' + _('ms2_product_width_help')
},
thickness: {
xtype: 'numberfield',
decimalPrecision: 2,
description: '<b>[[+thickness]]</b><br />' + _('ms2_product_thickness_help')
},
// Кроме того, таким нехитрым extjs-способом можно скрыть в админке
// стандартные поля miniShop2, если они Вам не нужны,
// например: color,size,article для конкретной категории.
// В моём случае размеры для Картин нужны, а для Рамок - нет.
size: {
hidden: true,
visible: false
}
}
}
},
getColumns: function () {
// Здесь все выводится так же как описано в инструкции по расширению.
return {
style: {
width: 50,
sortable: false,
editor: {
xtype: 'minishop2-combo-autocomplete',
name: 'style'
}
},
author: {
width: 50,
sortable: true,
editor: {
xtype: 'minishop2-combo-autocomplete',
name: 'author'
}
},
length: {
width: 50,
sortable: false,
editor: {
xtype: 'numberfield',
name: 'length'
}
},
width: {
width: 50,
sortable: false,
editor: {
xtype: 'numberfield',
name: 'width'
}
},
thickness: {
width: 50,
sortable: false,
editor: {
xtype: 'numberfield',
name: 'thickness'
}
}
}
}
};
Данное решение позволяет гибко настроить параметры товаров в админке для менеджера с ипользованием одного шаблона. Вот то, что получилось реализовать используя этот метод — два разных товара в разных категориях с одним шаблоном товара:И да, я понимаю что оно не совсем универсальное, так как при динамическом добавлении категорий/подкатегорий этот метод не подходит, но если количество категорий статично, то это лучшее что я смог придумать без дополнительных компонентов. Поиски решения подобной проблемы привели меня только сюда, но там какие-то совсем экзотические методы предложены.
Буду признателен за любую конструктивную критику или подсказку другого решения, которое лучше подойдёт для данной задачи.
UPD
Нашел вот такой более изящный и правильный способ — через твшку для родителя-категории и плагин который в админке подменяет значение системной настройки ms2_product_extra_fields. Оказывается, нужно просто было хорошо поискать.