C# 扩展内部链接和外部链接以允许选择图像
我需要扩展外部和内部链接的选择,并提供一个图像选择 请参见下面的快照: 在上面的快照中,您可以添加外部链接的属性。在同一弹出窗口中,我们可以添加一个名为images的字段,如屏幕截图所示,该字段将允许用户从媒体库中选择图像 谢谢,C# 扩展内部链接和外部链接以允许选择图像,c#,image,hyperlink,sitecore,sitecore7,C#,Image,Hyperlink,Sitecore,Sitecore7,我需要扩展外部和内部链接的选择,并提供一个图像选择 请参见下面的快照: 在上面的快照中,您可以添加外部链接的属性。在同一弹出窗口中,我们可以添加一个名为images的字段,如屏幕截图所示,该字段将允许用户从媒体库中选择图像 谢谢, Suhas如果您谈论的是整个字段,而不仅仅是富格文本字段内部的外部链接,那么您应该根据文档在SDN中创建自定义字段: 您可以从当前链接字段继承大部分功能。您实际上可以通过编辑/shell/Applications/Dialogs中的xml文件来扩展任何对话框 在另一
Suhas如果您谈论的是整个字段,而不仅仅是富格文本字段内部的外部链接,那么您应该根据文档在SDN中创建自定义字段:
您可以从当前链接字段继承大部分功能。您实际上可以通过编辑/shell/Applications/Dialogs中的xml文件来扩展任何对话框
在另一个线程中,我展示了如何在标题字段中添加maxlength,这将帮助您顺利完成:如果您正在使用Sitecore 7.2并希望更新内部链接,那么您需要使用Sitecore speak,如果是外部链接,只需在/shell/Applications/Dialogs/ExternalLink文件夹下更新即可 要呈现此字段,请创建CustomLinkRenderer类,并通过Sitecore.Kernel.dll的LinkRenderer在该类中进行渲染
Please see below code for CustomLinkRenderer
public class CustomLinkRenderer : LinkRenderer
{
public CustomLinkRenderer(Item item)
: base(item)
{
}
public override RenderFieldResult Render()
{
string str8;
SafeDictionary<string> dictionary = new SafeDictionary<string>();
dictionary.AddRange(this.Parameters);
if (MainUtil.GetBool(dictionary["endlink"], false))
{
return RenderFieldResult.EndLink;
}
Set<string> set = Set<string>.Create(new string[] { "field", "select", "text", "haschildren", "before", "after", "enclosingtag", "fieldname" });
LinkField linkField = this.LinkField;
if (linkField != null)
{
dictionary["title"] = StringUtil.GetString(new string[] { dictionary["title"], linkField.Title });
dictionary["target"] = StringUtil.GetString(new string[] { dictionary["target"], linkField.Target });
dictionary["class"] = StringUtil.GetString(new string[] { dictionary["class"], linkField.Class });
}
string str = string.Empty;
string rawParameters = this.RawParameters;
if (!string.IsNullOrEmpty(rawParameters) && (rawParameters.IndexOfAny(new char[] { '=', '&' }) < 0))
{
str = rawParameters;
}
if (string.IsNullOrEmpty(str))
{
Item targetItem = this.TargetItem;
string str3 = (targetItem != null) ? targetItem.DisplayName : string.Empty;
string str4 = (linkField != null) ? linkField.Text : string.Empty;
str = StringUtil.GetString(new string[] { str, dictionary["text"], str4, str3 });
}
string url = this.GetUrl(linkField);
if (((str8 = this.LinkType) != null) && (str8 == "javascript"))
{
dictionary["href"] = "#";
dictionary["onclick"] = StringUtil.GetString(new string[] { dictionary["onclick"], url });
}
else
{
dictionary["href"] = HttpUtility.HtmlEncode(StringUtil.GetString(new string[] { dictionary["href"], url }));
}
// Add onclick attribute for Google event tracking
dictionary["onclick"] = LinkField.GetAttribute("on_click");
StringBuilder tag = new StringBuilder("<a", 0x2f);
foreach (KeyValuePair<string, string> pair in dictionary)
{
string key = pair.Key;
string str7 = pair.Value;
if (!set.Contains(key.ToLowerInvariant()))
{
FieldRendererBase.AddAttribute(tag, key, str7);
}
}
tag.Append('>');
if (!MainUtil.GetBool(dictionary["haschildren"], false))
{
if (string.IsNullOrEmpty(str))
{
return RenderFieldResult.Empty;
}
tag.Append(str);
}
return new RenderFieldResult { FirstPart = tag.ToString(), LastPart = "</a>" };
}
}
您需要根据渲染图像的需要扩展此类