Sitecore 8.1 - 自定义字段类型和体验编辑器的“添加”按钮

时间:2015-12-18 07:51:51

标签: sitecore custom-controls content-editor sitecore8.1 experience-editor

涵盖体验(页面)编辑器和内容编辑器的问题。

我有一个时间轴聚焦,用户可以添加到页面 - 它有一个数十年的顶部列表,每十年下面有一个年份列表(包括他们的文本和图像)。

我创建了许多链接到各种数据源的控件,但我发现用户体验不足。

如果我去体验编辑:

  1. 选择时间轴占位符和添加项
  2. 弹出窗口选择/创建数据源
  3. 然后,添加十年的唯一方法是转到Decade数据源,在那里创建一个新项目,然后返回到时间轴数据源并添加此项目。

    我在想的是:

    • 内容编辑器 - 针对时间轴数据项,它们是“十年”的多列表字段 - 是否有任何简单的方法可以在其旁边添加一个“创建”按钮,该按钮将复制相同的事件,就像您去了提取数据源,然后点击插入项
    • 体验编辑器 - 删除占位符的使用并添加一个类似的“创建”按钮,该按钮将复制插入项事件 - 一旦创建项目并且属性设置刷新控件以显示依据。

    之前有人遇到过类似的东西吗?有更好的解决方案吗?

    谢谢, 丹

1 个答案:

答案 0 :(得分:2)

我实际上正在为新的实施工作相同的功能。

在内容编辑器中,您可能需要更新核心数据库 在xEditor中,您可以将sitecore JS命令与ajax和后端代码一起使用。我的建议是你可以创建一个渲染组件并将组件分配到命名的占位符而不是重新转移它。然后,在渲染项上调用后端和javascript事件。

这可能是一个起点。 的的Javascript 功能:

function setDataSrc(itemID, templatePath, suffix, renderingID, dbName, deviceID, renderingUID, reload, callBack) {
    var postReq = $.post("/handlePostRequest.aspx (or .cshtml)", {
        method: 'methodName'
        , itemID: itemID
        , templatePath: templatePath
        , suffix: suffix
        , renderingID: renderingID
        , dbName: dbName
        , deviceID: deviceID
        , renderingUID: renderingUID
    });

    postReq.done(function (data) {
        if (reload != false) {
            location.reload(true);
        }
        if (typeof callBack == 'function') {
            callBack(data);
        }
    });
}