扩展Sitecore插入链接功能

时间:2018-03-09 17:38:52

标签: javascript hyperlink insert icons sitecore

我有一个问题,我不太清楚如何处理。

我需要扩展Sitecore Insert链接功能:当我插入一个指向Sitecore项目的链接时,某个图标,基于某些逻辑(我已经为另一个用户故事(*)创建了逻辑),需要按下“插入”按钮后出现在链接的前面,当然,最后在UI上。

我正在考虑以下方法:在插入项目之后,项目的ID通过Ajax调用发送到后端,响应是一个标记,其中包含我上面告诉您的服务返回的值( *)。

问题是我不知道从哪里开始,或者我的想法是否正常。

欢迎任何帮助。

2 个答案:

答案 0 :(得分:0)

我找到了答案:

在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);  
        }        
    });

    [...]
}
  1. 首先我添加了var $ = jQuery.noConflict();在ajax电话之前; 更多信息:https://api.jquery.com/jquery.noconflict/

  2. 然后我检查了路线是否有任何变化:RegisterHttpRoutes;

  3. 利润。

答案 1 :(得分:0)

您可能最好修改renderField管道,因为如果您以后需要更改这些图标,则必须处理您网站上的每个链接。

为此,您需要创建一个处理器并让它在Sitecore.Pipelines.RenderField.ExpandLinks, Sitecore.Kernel管道中的renderField之前运行,以便您可以使用动态链接(包含ID)来确定你需要的图标。从那里,您可以使用HtmlAgilityPack.HtmlDocument在呈现链接时查找和更新标记。