Объединение свойств и опций товара в админ-панели
Здраствуйте! Подскажите как можно сгруппировать все свойства и опции товара в одной вкладке? Например как с tv-параметрами там можно в регионах выставить нужную вкладку, есть ли возможность сделать аналогично с свойствами и опциями?
На скриншоте наглядно показано то, о чем я говорю:
На скриншоте наглядно показано то, о чем я говорю:
Комментарии: 3
Сделайте что то вроде такого.
Создайте файл в /assets/components/minishop2/js/mgr/product и назовите его product.extends.js
Так же создайте плагин и привяжите его к событию OnDocFormPrerender
Получится как то так:
Создайте файл в /assets/components/minishop2/js/mgr/product и назовите его product.extends.js
Ext.override(miniShop2.panel.Product,{
getFields: function (config) {
var fields = [];
var originals = MODx.panel.Resource.prototype.getFields.call(this, config);
for (var i in originals) {
if (!originals.hasOwnProperty(i)) {
continue;
}
var item = originals[i];
if (item.id == 'modx-resource-header') {
item.html = '<h2>' + _('ms2_product_new') + '</h2>';
}
else if (item.id == 'modx-resource-tabs') {
item.stateful = MODx.config['ms2_product_remember_tabs'] == 1;
item.stateId = 'minishop2-product-' + config.mode + '-tabpanel';
item.stateEvents = ['tabchange'];
item.collapsible = false;
item.getState = function () {
return {activeTab: this.items.indexOf(this.getActiveTab())};
};
var product = [];
var other = [];
for (var i2 in item.items) {
if (!item.items.hasOwnProperty(i2)) {
continue;
}
var tab = item.items[i2];
switch (tab.id) {
case 'modx-resource-settings':
tab.items.push(this.getContent(config));
product.push(tab);
break;
case 'modx-page-settings':
tab.items = this.getProductSettings(config);
product.push(tab);
if(miniShop2.config['show_extra'] || miniShop2.config['show_options']) {
var copositeOptions;
copositeOptions = this.getProductFields(config);
if (!miniShop2.config['show_extra']) {
copositeOptions.items = [];
}
if (miniShop2.config['show_options']) {
var options = this.getProductOptions(config);
if (options) {
copositeOptions.items = copositeOptions.items.concat([{ title: options.title, style: "margin-top:30px;" }],options.items);
}
}
product.push(copositeOptions);
}
if (config.mode == 'update' && miniShop2.config['show_links']) {
product.push(this.getProductLinks(config));
}
if (miniShop2.config['show_categories']) {
product.push(this.getProductCategories(config));
}
break;
default:
other.push(tab);
}
}
var tabs = [{
title: _('ms2_tab_product'),
cls: 'panel-wrapper',
id: 'minishop2-product-tab',
items: [{
xtype: 'modx-tabs',
id: 'minishop2-product-tabs',
stateful: MODx.config['ms2_product_remember_tabs'] == 1,
stateId: 'minishop2-product-' + config.mode + '-tabpanel-product',
stateEvents: ['tabchange'],
getState: function () {
return {activeTab: this.items.indexOf(this.getActiveTab())};
},
deferredRender: false,
items: product,
resource: config.resource,
border: false,
listeners: {},
}]
}];
item.items = tabs.concat(other);
}
if (item.id != 'modx-resource-content') {
fields.push(item);
}
}
return fields;
},
});
Так же создайте плагин и привяжите его к событию OnDocFormPrerender
<?php
switch ($modx->event->name) {
case 'OnDocFormPrerender':
if($modx->controller->resourceArray['class_key'] == 'msProduct'){
if ($miniShop2 = $modx->getService('miniShop2')) {
$modx->controller->addLastJavascript($miniShop2->config['jsUrl'].'mgr/product/product.extends.js');
}
}
break;
}
Получится как то так:
Спасибо! Попробую! С TV такое возможно сделать?
Можно! В регионах прописать лишь:))
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.