从主数据库填充RTE中的Sitecore创建下拉按钮

从主数据库填充RTE中的Sitecore创建下拉按钮,sitecore,Sitecore,我正在尝试在Sitecore中为富文本编辑器(RTE)创建一个下拉按钮,但无法确定如何实现此功能。我想要类似于下面显示的“插入代码段”命令的东西,但是下拉列表的源由主数据库中的内容驱动,而不是html编辑器配置文件中的核心项。 我发现的最接近的方法是这个 另一个选项是使用保存处理程序,该处理程序可以在主数据库的特定区域中创建/编辑项目时,在核心数据库中创建代码段项目。继承Sitecore.Shell.Controls.RichTextEditor.EditorConfiguration。如果只

我正在尝试在Sitecore中为富文本编辑器(RTE)创建一个下拉按钮,但无法确定如何实现此功能。我想要类似于下面显示的“插入代码段”命令的东西,但是下拉列表的源由主数据库中的内容驱动,而不是html编辑器配置文件中的核心项。

我发现的最接近的方法是这个


另一个选项是使用保存处理程序,该处理程序可以在主数据库的特定区域中创建/编辑项目时,在核心数据库中创建代码段项目。

继承Sitecore.Shell.Controls.RichTextEditor.EditorConfiguration。如果只想将代码段添加到标准代码段列表中,只需重写SetupSnippets方法并添加到Editor.snippets集合

如果您想添加自己的下拉列表,它将变得更加复杂,但您可能可以覆盖SetupToolbars方法,并使用EditorDropDown添加EditorToolGroup。如果遇到任何问题,您可能需要查看Telerik的RadEditor文档


编写了类的草稿后,通过转到/sitecore/system/Settings/Html编辑器profile下的核心数据库中的概要文件定义来注册它。每个概要文件都有一个配置类型项,您可以在其中指定类的类型签名。

设置您自己的按钮需要大量的工作,包括所有JS处理程序。实现所需功能的最简单方法是(如Ben Holden所述)继承
Sitecore.Shell.Controls.RichTextEditor.EditorConfiguration
并重写
SetupSnippets()
方法:

public class EditorConfiguration : Sitecore.Shell.Controls.RichTextEditor.EditorConfiguration
{
    public EditorConfiguration(Sitecore.Data.Items.Item profile)
        : base(profile)
    {
    }

    protected override void SetupSnippets()
    {
        // add in all the snippets from default
        base.SetupSnippets();

        // load your custom snippets
        Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
        Sitecore.Data.Items.Item obj1 = master.GetItem("/sitecore/content/shared/snippets");
        if (obj1 == null)
            return;
        foreach (Sitecore.Data.Items.Item obj2 in obj1.Children)
            this.Editor.Snippets.Add(string.IsNullOrEmpty(obj2["Header"]) ? obj2.Name : obj2["Header"], Sitecore.StringUtil.RemoveLineFeeds(obj2["Value"]));
    }
}
然后可以在web.config中设置配置类型(使用)


如果您的配置文件包含名为
配置类型
的子项,则它将使用该子项,否则将使用配置中指定的默认项。默认情况下,其他配置文件不包含此设置项。如果希望其他配置文件(或自定义配置文件)使用特定(或不同)配置,请确保您的配置文件包含名为
配置类型
的项,该项属于模板类型
Html编辑器配置类型
。这在多站点场景中可能非常有用。

请注意,默认情况下,DefaultConfigurationType设置没有任何效果,因为每个编辑器配置文件都会使用配置类型项覆盖它。要使配置设置生效,您需要删除配置类型项或清除其类型字段。是的,您是对的,我很少使用富文本默认配置文件,其他配置文件没有配置集(默认情况下)。我将更新我的答案以反映这一点。
<!--  HTML EDITOR DEFAULT CONFIGURATION TYPE
    Specifies the type responsible for setting up the rich text editor. Can be overriden at profile level. Must inherit from Sitecore.Shell.Controls.RichTextEditor.EditorConfiguration,Sitecore.Client.
    Default value: Sitecore.Shell.Controls.RichTextEditor.EditorConfiguration,Sitecore.Client
-->
<setting name="HtmlEditor.DefaultConfigurationType" value="myCustomDLL.Controls.RichTextEditor.EditorConfiguration, myCustomDLL"/>
/sitecore/system/Settings/Html Editor Profiles/Rich Text Default/Configuration Type