扩展 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);  
        }        
    });

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

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

  3. 利润。

您最好修改 renderField 管道,因为如果您以后需要更改这些图标,您将不得不处理您网站上的每个 link。

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