我需要扩展外部和内部链接的选择并提供图像选择。
请参阅下面的快照:
此处上面的快照允许您添加外部链接的属性。在同一个弹出窗口中,我们可以添加一个字段Called Image(如屏幕截图所示),这将允许用户从媒体库中选择图像吗?
谢谢, 苏哈斯
答案 0 :(得分:1)
如果您正在使用Sitecore 7.2并且想要更新内部链接,那么您需要使用Sitecore发言,如果是外部链接,只需在/ 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>" };
}
}
您需要根据渲染图像的需要扩展此类。
答案 1 :(得分:0)
如果您正在讨论整个字段而不仅仅是富文本字段中的外部链接,那么您应该根据SDN中的文档创建自定义字段:
http://sdn.sitecore.net/Articles/API/Creating%20a%20Composite%20Custom%20Field.aspx
您可以从当前链接字段继承大多数功能。
答案 2 :(得分:0)
您实际上可以通过编辑/ shell / Applications / Dialogs
中的xml文件来扩展任何对话框在另一个主题中,我展示了如何在标题字段中添加maxlength,这可以帮助您顺利开始:Limit number of Characters entered for Link Title Field in General Link