扩展 Sitecore 插入 link 功能
Extend Sitecore insert link functionality
我有一个问题,我不太清楚如何解决。
我需要扩展 Sitecore 插入 link 功能:当我将 link 插入 Sitecore 项目时,某个图标基于某种逻辑(我已经为另一个用户故事(*)), 需要在 "Insert" 按钮按下后出现在 link 的前面,当然,最后出现在 UI.
我在考虑以下方法:插入项目后,通过 Ajax 调用将项目的 ID 发送到后端,响应是服务返回值的标记我在上面 (*) 告诉过你。
问题是我不知道从哪里开始,或者我的想法是否可以。
欢迎任何帮助。
我找到了答案:
在 RichText Commands.js 文件中,我添加了以下脚本,该脚本将项目 Sitecore ID 发送到 API:
function scInsertSitecoreLink(sender, returnValue) {
if (!returnValue) {
return;
}
var url = returnValue.url;
var itemId = url.substring(url.indexOf("=") + 1, url.lastIndexOf("&"));
var $ = jQuery.noConflict();
$.ajax({
async: true,
type: "GET",
url: '/sitecore/api/Test/ThisIsTheTestApiCall',
data: JSON.stringify(itemId),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
alert(result);
}
});
[...]
}
首先我添加了 var $ = jQuery.noConflict();在 ajax 调用之前;
更多信息在这里:https://api.jquery.com/jquery.noconflict/
然后我检查了路由是否有任何变化:RegisterHttpRoutes;
利润。
您最好修改 renderField
管道,因为如果您以后需要更改这些图标,您将不得不处理您网站上的每个 link。
为此,您需要在 renderField
管道中的 Sitecore.Pipelines.RenderField.ExpandLinks, Sitecore.Kernel
之前创建一个处理器并在 运行 之前使用它,以便您可以使用动态 links(其中包含 ID)来找出您需要的图标。从那里您可以使用 HtmlAgilityPack.HtmlDocument 在呈现 link 时查找和更新标记。
我有一个问题,我不太清楚如何解决。
我需要扩展 Sitecore 插入 link 功能:当我将 link 插入 Sitecore 项目时,某个图标基于某种逻辑(我已经为另一个用户故事(*)), 需要在 "Insert" 按钮按下后出现在 link 的前面,当然,最后出现在 UI.
我在考虑以下方法:插入项目后,通过 Ajax 调用将项目的 ID 发送到后端,响应是服务返回值的标记我在上面 (*) 告诉过你。
问题是我不知道从哪里开始,或者我的想法是否可以。
欢迎任何帮助。
我找到了答案:
在 RichText Commands.js 文件中,我添加了以下脚本,该脚本将项目 Sitecore ID 发送到 API:
function scInsertSitecoreLink(sender, returnValue) {
if (!returnValue) {
return;
}
var url = returnValue.url;
var itemId = url.substring(url.indexOf("=") + 1, url.lastIndexOf("&"));
var $ = jQuery.noConflict();
$.ajax({
async: true,
type: "GET",
url: '/sitecore/api/Test/ThisIsTheTestApiCall',
data: JSON.stringify(itemId),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
alert(result);
}
});
[...]
}
首先我添加了 var $ = jQuery.noConflict();在 ajax 调用之前; 更多信息在这里:https://api.jquery.com/jquery.noconflict/
然后我检查了路由是否有任何变化:RegisterHttpRoutes;
利润。
您最好修改 renderField
管道,因为如果您以后需要更改这些图标,您将不得不处理您网站上的每个 link。
为此,您需要在 renderField
管道中的 Sitecore.Pipelines.RenderField.ExpandLinks, Sitecore.Kernel
之前创建一个处理器并在 运行 之前使用它,以便您可以使用动态 links(其中包含 ID)来找出您需要的图标。从那里您可以使用 HtmlAgilityPack.HtmlDocument 在呈现 link 时查找和更新标记。