Modx 隐藏特定选项卡中的内容字段

Modx hide content field from a specific tab

Modx revo 最新版本

我需要从使用表单自定义创建的特定选项卡中隐藏内容字段,我找到了这个 Ext JS 代码,但我不知道如何实现它。它是 ondocformrender 的插件吗?我应该创建一个 js 文件吗?

Ext.onReady(function(){
var tabPanel = Ext.getCmp("modx-resource-tabs");

if(tabPanel!=null){
    //Add my custom tab
    var customTab = {
        title: 'Custom',
        id: 'my-custom-tab',
        cls: 'modx-resource-tab',
        layout: 'fit',
        labelAlign: 'top',
        labelSeparator: '',
        bodyCssClass: 'tab-panel-wrapper main-wrapper',
        autoHeight: true,
        defaults: {
            border: false,
            msgTarget: 'under',
            width: 400,
            height:800
        },
        items: [
            {
                xtype: "box",
                autoEl: {cn: '<div id="target_id"></div>'}
            }
        ]
    };
    tabPanel.on('tabchange', function(parent,selectedTab){ 
        if (selectedTab.id == 'my-custom-tab') {
            Ext.getCmp("modx-resource-content").hide();
        }
        else {
            Ext.getCmp("modx-resource-content").show();
        }
    });
    tabPanel.insert(0, customTab);
    tabPanel.setActiveTab(0);
    tabPanel.doLayout();
}
});

您不需要编辑任何 ExtJS,您可以通过 MODX 的 Manager Customization 功能来完成。

请参阅附件截图以供参考。

我在 OnDocFormPrerender 上做了一个这样的插件:

<?php
switch ($modx->event->name) {
// Add a custom tab to the MODX create/edit resource pages
case 'OnDocFormPrerender':
    $custom_html = 'Your custom HTML, e.g. from a model function or API         lookup etc.';
    $modx->regClientStartupHTMLBlock('<script type="text/javascript">
        Ext.onReady(function(){
var tabPanel = Ext.getCmp("modx-resource-tabs");

if(tabPanel!=null){
    tabPanel.on(\'tabchange\', function(parent,selectedTab){ 
        if (selectedTab.id == \'modx-ref\') {
            Ext.getCmp("modx-resource-content").hide();
        }
        else {
            Ext.getCmp("modx-resource-content").show();
        }
    });
    tabPanel.insert(0, customTab);
    tabPanel.setActiveTab(0);
    tabPanel.doLayout();
}
});               
    </script>');
}