如何在 Sitecore 自定义项目编辑器中使用保存事件?

How do I utilize the save event in a Sitecore custom Item Editor?

我正在创建一个自定义项目编辑器,并使用以下博客文章作为响应内容编辑器中的"保存"事件的参考,这样我就不需要为我创建第二个令人困惑的保存按钮用户。

http://www.markvanaalst.com/sitecore/creating-a-item-editor/

我可以将我的值保存到项目中,但正常内容选项卡中的值也会被保存,覆盖我的值。我已经通过 Firebug 确认了这一点。有没有办法防止这种情况发生,或者确保我的保存总是在默认保存之后?

我在 SDN 上也有这个支持票,但我想知道 SO 社区能想出什么。

谢谢!


尝试了基于 iframe 的解决方案,该解决方案使用 IFrame 字段来读取和保存在我的项目编辑器中输入的值。它需要稍微清理一下,感觉就像是一个界面黑客,但它目前似乎正在工作。

在我的项目编辑器中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
jQuery(function () {
    var parentScForm = window.parent.scForm;
    parentScForm.myItemEditor = window;
});


function myGetValue(field) {
    var values = [];
    jQuery('#myForm input[@name="' + field + '"]:checked').each(function () {
        values.push(jQuery(this).val());
    });
    var value = values.join('|');
    return value;
}

在我的 iframe 字段中:

1
2
3
4
5
6
7
8
9
function scGetFrameValue() {
    var parentScForm = window.parent.scForm;
    if (typeof (parentScForm.myItemEditor) !="undefined") {
        if (typeof (parentScForm.myItemEditor.myGetValue) !="undefined") {
            return parentScForm.myItemEditor.myGetValue("myLists");
        }
    }
    return null;
}

理论上,我可以在项目上拥有多个以这种方式"委托"给项目编辑器的字段——使用内容编辑器保存而不是试图与之抗争。我对"搭便车"到 scForm 以在我的页面之间进行通信有点不安——可能会向我们的常驻 Javascript 黑客咨询更好的方法。

对解决方案有什么意见吗?

编辑:博客上有关此解决方案的更多信息