扩展Sitecore插入链接功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扩展Sitecore插入链接功能相关的知识,希望对你有一定的参考价值。
我有一个问题,我不知道如何处理。
我需要扩展Sitecore Insert链接功能:当我插入Sitecore项目的链接时,基于某些逻辑(我已经为另一个用户故事(*)创建了逻辑)的某个图标需要出现在按下“插入”按钮后的链接前面,当然,最后在UI上。
我正在考虑以下方法:在插入项目之后,项目的ID通过Ajax调用发送到后端,响应是一个标记,其中包含我在上面告诉您的服务返回的值(*)。
问题是我不知道从哪里开始或者我的想法是否正常。
欢迎任何帮助。
答案
我找到了答案:
在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
管道,因为如果您以后需要更改这些图标,则必须处理站点上的每个链接。
要做到这一点,你需要创建一个处理器并让它在Sitecore.Pipelines.RenderField.ExpandLinks, Sitecore.Kernel
管道中的renderField
之前运行,这样你就可以使用动态链接(包含ID)来确定你需要的图标。从那里,您可以使用htmlAgilityPack.HtmlDocument在呈现链接时查找和更新标记。
以上是关于扩展Sitecore插入链接功能的主要内容,如果未能解决你的问题,请参考以下文章
Sitecore Powershell 批量替换richtext 字段内容