C# 扩展内部链接和外部链接以允许选择图像

C# 扩展内部链接和外部链接以允许选择图像,c#,image,hyperlink,sitecore,sitecore7,C#,Image,Hyperlink,Sitecore,Sitecore7,我需要扩展外部和内部链接的选择,并提供一个图像选择 请参见下面的快照: 在上面的快照中,您可以添加外部链接的属性。在同一弹出窗口中,我们可以添加一个名为images的字段,如屏幕截图所示,该字段将允许用户从媒体库中选择图像 谢谢, Suhas如果您谈论的是整个字段,而不仅仅是富格文本字段内部的外部链接,那么您应该根据文档在SDN中创建自定义字段: 您可以从当前链接字段继承大部分功能。您实际上可以通过编辑/shell/Applications/Dialogs中的xml文件来扩展任何对话框 在另一

我需要扩展外部和内部链接的选择,并提供一个图像选择

请参见下面的快照:

在上面的快照中,您可以添加外部链接的属性。在同一弹出窗口中,我们可以添加一个名为images的字段,如屏幕截图所示,该字段将允许用户从媒体库中选择图像

谢谢,
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>" };
        }
    }
您需要根据渲染图像的需要扩展此类