Telerik Can Sitecore';s富文本编辑器';s的内部链接管理器还记得您的上一个位置吗? 问题:

Telerik Can Sitecore';s富文本编辑器';s的内部链接管理器还记得您的上一个位置吗? 问题:,telerik,sitecore,sitecore6,radeditor,Telerik,Sitecore,Sitecore6,Radeditor,是否可以记住最后链接的项目,并在下次使用“插入链接”对话框时选择该项目 背景 我们的Sitecore内容编辑器使用富文本编辑器(Telerik RadEditor)编辑我们网站上的HTML内容。有时,他们需要在同一页面上创建几个类似区域的链接(例如,几个不同的相关文章)。当前,当它们单击“插入链接”按钮时,将显示“插入链接”对话框,其中内容树中选择了当前项。他们浏览到要链接的项目,然后单击链接。然后他们去创建另一个链接,它会再次打开“插入当前项目的链接”对话框,而不是他们刚刚链接的项目。我找到的

是否可以记住最后链接的项目,并在下次使用“插入链接”对话框时选择该项目

背景
我们的Sitecore内容编辑器使用富文本编辑器(Telerik RadEditor)编辑我们网站上的HTML内容。有时,他们需要在同一页面上创建几个类似区域的链接(例如,几个不同的相关文章)。当前,当它们单击“插入链接”按钮时,将显示“插入链接”对话框,其中内容树中选择了当前项。他们浏览到要链接的项目,然后单击链接。然后他们去创建另一个链接,它会再次打开“插入当前项目的链接”对话框,而不是他们刚刚链接的项目。

我找到的解决方案需要在
Website\sitecore\shell\Controls\RichText Editor\RichText Commands.js中进行更改,只要不重新加载页面就可以工作。通过将信息存储在cookie中,而不是使用变量prevId,您可以轻松地将其扩展到在编辑其他页面时工作

首先,您需要在文件开头定义变量:

var prevId = null;
每次插入Sitecore链接时,我们都会将最后选择的项目id分配给此变量

第二步是扩展
scInsertSitecoreLink
函数,在选择链接后分配
prevId
变量:

function scInsertSitecoreLink(sender, returnValue) {

    if (!returnValue) {
        return;
    }

    prevId = returnValue.url.match(/id\=[a-fA-F0-9]{32}/g);
    if (prevId) {
        prevId = prevId[0].substr(3);
    }

    ... rest of the scInsertSitecoreLink goes here
最后一步是修改
RadEditorCommandList[“InsertSitecoreLink”]
函数,如果在尝试分配保存当前项目id的
scItemID
之前设置了变量值,则该函数将使用该变量值:

RadEditorCommandList["InsertSitecoreLink"] = function(commandName, editor, args) {\

    ... here goes the original code of the function up to 
    if (!id) { 
        ... and the code in the bracket
    }

    ... and now we try to assign the prevId which was set after the last link was chosen
    if(!id && prevId) {
        id = prevId;
    }

    ... and here goes the rest of the function
    if (!id) {
        id = scItemID;
    }