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

时间:2014-01-31 16:39:22

标签: sitecore

我正在尝试为Sitecore中的富文本编辑器(RTE)创建一个下拉按钮,但无法弄清楚如何实现它。我想要类似于下面显示的'Insert Snippet'命令,但是下拉源由master数据库中的内容驱动,而不是html编辑器配置文件中的核心项。 enter image description here

我发现的最接近的方法是article which describes how to add a button which opens a dialog in the RTE

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

2 个答案:

答案 0 :(得分:3)

设置自己的按钮需要花费大量的工作,包括所有的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中设置配置类型(使用patch include file

<!--  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"/>

然后在指定目录中创建代码段。您可能必须在添加片段后刷新浏览器,因为RTE中正在进行一些缓存。

修改

正如Ben正确指出的那样,如果您使用的是Rich Text Default个人资料,那么在配置中设置HtmlEditor.DefaultConfigurationType将无效。配置文件下的核心数据库中的以下项目确定了用于“富文本默认”配置文件的配置类型,例如:

/sitecore/system/Settings/Html Editor Profiles/Rich Text Default/Configuration Type

如果您的个人资料包含名为Configuration Type的子项,那么它将使用该项,否则它将使用config中指定的默认值。默认情况下,其他配置文件不包含此设置项。如果您希望其他配置文件(或自定义配置文件)使用特定(或不同)配置,请确保您的配置文件包含名为Configuration Type的模板类型Html Editor Configuration Type的项目。这在多站点场景中非常有用。

答案 1 :(得分:2)

继承Sitecore.Shell.Controls.RichTextEditor.EditorConfiguration。如果您只想将片段添加到标准片段列表,只需覆盖SetupSnippets方法并添加到Editor.Snippets集合。

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

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