如何在EPiServer CMS编辑视图中设置选定的选项卡?

时间:2019-01-24 11:42:20

标签: c# .net dojo content-management-system episerver

我们有一个带有许多标签的EPiServer(表单)编辑视图。客户要求在编辑器打开编辑页面时,在某些情况下应自动选择#2标签(称为“替代内容”)。我们不想重新排列标签。如何做到这一点?我们正在运行EPiServer 11。

更新

我尝试使用Dojo脚本来完成此任务。 EPiServer中的结果取决于我的设置方式,在这种情况下,这对我来说有点奇怪。这是文件

Web \ modules \ CMSDefaultTabSelector \ module.config

module.config

这是在ModifyMetadata中调用它的方式:

Calling code in ModifyMetadata

...以及脚本本身CMSDefaultTabSelector.js如下所示:

CMSDefaultTabSelector.js

结果取决于您是否发送EditLayoutContainer,Dialog或完全跳过它(应以 外观的方式),如下所示:

EditLayoutContainer的结果

Result with EditLayoutContainer

带有对话框的结果

Result with Dialog

结果应为

Result original

如果我尝试跳过此参数,则会收到错误“ ctor不是构造函数” 。其他布局元素只会呈现一个空白标签,怪异错误,或者您会收到其他错误消息。如果我使用require([...]),则每次重新加载页面时都会调用该函数,这不是我想要的。我希望仅在ModifyMetadata中的代码启动时才调用它。希望有人可以提供帮助。

1 个答案:

答案 0 :(得分:2)

摆弄了一段时间后,我终于找到了魔术代码。由于其他人也可能想知道这是如何完成的,因此这是最终(使用Dojo)解决的方法:

define([
"dojo/_base/declare",
"epi/shell/layout/SimpleContainer"
],

function (
    declare,
    SimpleContainer
)
{
    return declare([SimpleContainer], {
        //constructor: function () {},

        postCreate: function () { /* PostCreate fires too soon, and the tab strip is not completely rendered */ },

        startup: function () {
            // Use Jquery to select the tab we manually want to change to, and click it:
            var tabElement = $("div.dijitContentPane span.tabLabel:contains('Additional content')");
            if ($(tabElement).length) {
                $(tabElement).trigger("click");
            }
        }

    });
}

);