代码之家  ›  专栏  ›  技术社区  ›  iusmar

扩展Sitecore插入链接功能

  •  0
  • iusmar  · 技术社区  · 7 年前

    我有一个问题,我不太知道如何解决。

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

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

    问题是我不知道从哪里开始,也不知道我的想法是否可行。

    欢迎任何帮助。

    2 回复  |  直到 7 年前
        1
  •  0
  •   iusmar    7 年前

    我找到了答案:

    在RichText命令中。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。无冲突();在ajax调用之前; 更多信息请点击此处: https://api.jquery.com/jquery.noconflict/

    2. 然后我检查了路由是否有任何更改:registerhtproutes;

    3. 利润

        2
  •  0
  •   Dan Wallace    6 年前

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

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