Sitecore 8.1 - 'Add' 自定义字段类型和体验编辑器的按钮
Sitecore 8.1 - 'Add' button to custom field type and Experience Editor
涵盖体验(页面)编辑器和内容编辑器的问题。
我有一个时间轴聚光灯,用户可以将其添加到页面中 - 它在顶部有一个十年列表,每个十年下面都有一个年份列表(及其文本和图像)。
我已经为各种数据源创建了一些 link 控件,但我发现用户体验欠缺。
如果我转到体验编辑器:
- Select 时间线占位符和添加项目
- 弹出 select/create 数据源
那么添加十年的唯一方法是转到 Decade 数据源,在那里创建一个新项目,然后返回到时间线数据源并将此项添加到他们的。
我想到的是:
- 内容编辑器 - 针对时间线数据项,它们是 'Decades' 的多列表字段 - 是否有任何简单的方法可以在其旁边添加一个 'Create' 按钮来复制相同的事件就像您转到 Decades 数据源并单击 insert item
- 体验编辑器 - 删除占位符的使用并添加一个类似的 'Create' 按钮,该按钮将复制 插入项目 事件 - 一旦创建项目并设置属性刷新控制显示。
有人遇到过类似的事情吗?有更好的解决方案吗?
谢谢,
旦
我实际上正在为我们的新实现开发相同的功能。
在内容编辑器中,您可能需要更新核心数据库。
在 xEditor 中,您可以使用带有 ajax 和后端代码的 sitecore JS 命令。我的建议是您可以创建一个呈现组件并将该组件分配给命名的占位符,而不是将其删除。然后,在渲染项上调用后端和 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);
}
});
}
从 Sitecore 社区得到了可能有帮助的答案 -
在体验编辑器中,您可以创建一个编辑框按钮并将其用于您的渲染...据我所知,您的渲染数据源指向 "decades" 文件夹。在您的渲染中,检查您是否在页面编辑器中并使用自定义编辑框架来显示自定义按钮。其中之一将是一个插入按钮,允许您在 "decades".
下创建一个新的 child
有关 this blog post 体验编辑器编辑框架按钮的完整详细信息。
涵盖体验(页面)编辑器和内容编辑器的问题。
我有一个时间轴聚光灯,用户可以将其添加到页面中 - 它在顶部有一个十年列表,每个十年下面都有一个年份列表(及其文本和图像)。
我已经为各种数据源创建了一些 link 控件,但我发现用户体验欠缺。
如果我转到体验编辑器:
- Select 时间线占位符和添加项目
- 弹出 select/create 数据源
那么添加十年的唯一方法是转到 Decade 数据源,在那里创建一个新项目,然后返回到时间线数据源并将此项添加到他们的。
我想到的是:
- 内容编辑器 - 针对时间线数据项,它们是 'Decades' 的多列表字段 - 是否有任何简单的方法可以在其旁边添加一个 'Create' 按钮来复制相同的事件就像您转到 Decades 数据源并单击 insert item
- 体验编辑器 - 删除占位符的使用并添加一个类似的 'Create' 按钮,该按钮将复制 插入项目 事件 - 一旦创建项目并设置属性刷新控制显示。
有人遇到过类似的事情吗?有更好的解决方案吗?
谢谢, 旦
我实际上正在为我们的新实现开发相同的功能。
在内容编辑器中,您可能需要更新核心数据库。
在 xEditor 中,您可以使用带有 ajax 和后端代码的 sitecore JS 命令。我的建议是您可以创建一个呈现组件并将该组件分配给命名的占位符,而不是将其删除。然后,在渲染项上调用后端和 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);
}
});
}
从 Sitecore 社区得到了可能有帮助的答案 -
在体验编辑器中,您可以创建一个编辑框按钮并将其用于您的渲染...据我所知,您的渲染数据源指向 "decades" 文件夹。在您的渲染中,检查您是否在页面编辑器中并使用自定义编辑框架来显示自定义按钮。其中之一将是一个插入按钮,允许您在 "decades".
下创建一个新的 child有关 this blog post 体验编辑器编辑框架按钮的完整详细信息。