4

问题

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

背景

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

4

1 回答 1

2

我找到的解决方案需要更改Website\sitecore\shell\Controls\Rich Text 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"]它使用prevId变量值的函数,如果它在尝试分配scItemID保存当前项目 id 之前设置:

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;
    }
于 2013-04-03T21:20:12.897 回答