2013-11-03 50 views
1

当用户使用“插入链接”功能的RTE创建的故事,我们得到的东西像...
<a href="link-to-story"><Item-Name-Of-Story</a>Sitecore的富链接插入的文本编辑器定制

而不是采取项目名称,我想使用所谓的“头衔”
另一场有谁知道如何做到这一点?...

<a href="link-to-story">Headline-Of-Story</a> 

任何帮助将非常感激。谢谢

回答

2

首先,你需要用Reflector或DotPeek来看这个类:Sitecore.Shell.Controls.RichTextEditor.InsertLink.InsertLinkForm并用你自己的类修改它。 您需要修改只是这种方法,我测试和工程罚款:

protected override void OnOK(object sender, EventArgs args) 
{ 
    Assert.ArgumentNotNull(sender, "sender"); 
    Assert.ArgumentNotNull((object) args, "args"); 
    string displayName; 
    string text; 
    if (this.Tabs.Active == 0 || this.Tabs.Active == 2) 
    { 
    Item selectionItem = this.InternalLinkTreeview.GetSelectionItem(); 
    if (selectionItem == null) 
    { 
     SheerResponse.Alert("Select an item.", new string[0]); 
     return; 
    } 
    else 
    { 
     displayName = selectionItem["Headline"]; 
     if (selectionItem.Paths.IsMediaItem) 
     text = CustomInsertLinkForm.GetMediaUrl(selectionItem); 
     else if (!selectionItem.Paths.IsContentItem) 
     { 
     SheerResponse.Alert("Select either a content item or a media item.", new string[0]); 
     return; 
     } 
     else 
     { 
     LinkUrlOptions options = new LinkUrlOptions(); 
     text = LinkManager.GetDynamicUrl(selectionItem, options); 

     } 
    } 
    } 
    else 
    { 
    MediaItem mediaItem = (MediaItem) this.MediaTreeview.GetSelectionItem(); 
    if (mediaItem == null) 
    { 
     SheerResponse.Alert("Select a media item.", new string[0]); 
     return; 
    } 
    else 
    { 
     displayName = mediaItem.DisplayName; 
     text = CustomInsertLinkForm.GetMediaUrl((Item) mediaItem); 
    } 
    } 
    if (this.Mode == "webedit") 
    { 
    SheerResponse.SetDialogValue(StringUtil.EscapeJavascriptString(text)); 
    base.OnOK(sender, args); 
    } 
    else 
    SheerResponse.Eval("scClose(" + StringUtil.EscapeJavascriptString(text) + "," + StringUtil.EscapeJavascriptString(displayName) + ")"); 
} 

在修改这个类,你需要修改一个文件: \ Sitecore的\壳\控制\富文本编辑器\插入链接\插入链接。 XML,你需要改变codeBeside部分

<CodeBeside Type="Sitecore.Shell.Controls.RichTextEditor.InsertLink.InsertLinkForm,Sitecore.Client"/> 

的东西,如:

<CodeBeside Type="YourNameSpace.YourInsertLinkForm,YourAssembly"/> 
+0

非常感谢你Sitecore登山者!你是一个拯救生命的人! :) 再次感谢。 –

1

最简单的方法是输入所需的链接文本,然后在点击“插入链接”之前选择此项 - 这样您的超链接将拥有您输入的任何文本,而不是默认为项目名称。

如果您想要修改Sitecore在RTE字段中呈现链接的方式,则需要修改<renderField>管道 - 如果您在web.config中搜索此内容,您将看到这里涉及的不同类。使用dotPeek,您可以反编译Sitecore源代码以了解其工作原理。有可能你可以创建你自己的renderField管道处理程序来改变链接呈现行为,然后在你的web.config中引用这个新类。

+0

谢谢你太.. mdresser。非常感谢,谢谢。 :) –