2013-11-03 66 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。非常感謝,謝謝。 :) –