首页 > 解决方案 > 如何在 EPiServer CMS 编辑视图中设置选定选项卡?

问题描述

我们有一个带有许多选项卡的 EPiServer(表单)编辑视图。客户要求当编辑打开编辑页面时,在特定条件下应自动选择#2 选项卡(称为“替代内容”)。我们不想重新排序选项卡。如何实现?我们正在运行 EPiServer 11。

更新:

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

Web\modules\CMSDefaultTabSelector\module.config

模块配置

以下是它在 ModifyMetadata 中的调用方式:

ModifyMetadata 中的调用代码

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

CMSDefaultTabSelector.js

结果如下

结果与 EditLayoutContainer

结果与 EditLayoutContainer

对话框的结果

对话框的结果

结果应该是

结果原始

如果我尝试跳过此参数,我会收到错误"ctor is not a constructor"。其他布局元素只会呈现一个空选项卡、更奇怪的错误,或者您会收到其他错误消息。如果我使用require([...]),则在每次重新加载页面时都会调用该函数,这不是我想要的。我希望仅在 ModifyMetadata 中的代码启动时才调用它。希望有人能提供帮助。

标签: c#.netdojocontent-management-systemepiserver

解决方案


折腾了半天,终于找到了魔法密码。由于其他人可能也想知道这是如何完成的,因此最终解决的方法如下(使用 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");
            }
        }

    });
}

);


推荐阅读