当用户使用RTE上的“插入链接”功能创建故事时,我们会得到类似的信息......
<a href="link-to-story"><Item-Name-Of-Story</a>
我不想使用Item名称,而是使用另一个名为“Headline”的字段 有谁知道怎么做?...
<a href="link-to-story">Headline-Of-Story</a>
任何帮助将不胜感激。感谢
答案 0 :(得分: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 \ shell \ Controls \ Rich Text Editor \ InsertLink \ InsertLink.xml,您需要更改codeBeside部分
<CodeBeside Type="Sitecore.Shell.Controls.RichTextEditor.InsertLink.InsertLinkForm,Sitecore.Client"/>
有类似的东西:
<CodeBeside Type="YourNameSpace.YourInsertLinkForm,YourAssembly"/>
答案 1 :(得分:1)
最简单的方法是键入所需的链接文本,然后在单击“插入链接”之前选择此项 - 这样您的超链接将包含您输入的任何内容的文本,而不是默认为项目名称。
如果要修改Sitecore在RTE字段中呈现链接的方式,则需要修改<renderField>
管道 - 如果在web.config中搜索此内容,您将看到此处涉及的不同类。使用dotPeek,您可以反编译Sitecore源以查看其工作原理。然后,您可以创建自己的renderField管道处理程序来更改链接呈现行为,然后在web.config中引用此新类。