首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在从主数据库填充的RTE中创建下拉按钮

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

Stack Overflow用户
提问于 2014-01-31 16:39:21
回答 2查看 804关注 0票数 5

我试图为Sitecore中的富文本编辑器(RTE)创建一个下拉按钮,但无法找到如何实现这个按钮。我希望类似于下面所示的“插入代码段”命令,但下拉列表的来源是由主数据库中的内容驱动的,而不是html编辑器配置文件中的核心项。

我发现的最接近的方法是这个文章描述了如何在RTE中添加打开对话框的按钮。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-01 02:52:07

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

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

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

票数 2
EN

Stack Overflow用户

发布于 2014-02-01 07:12:02

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

代码语言:javascript
复制
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中设置配置类型(使用补丁包括文件)

代码语言:javascript
复制
<!--  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将不会产生任何效果。例如,概要文件下的核心数据库中的以下项确定“富文本默认”配置文件使用的配置类型:

代码语言:javascript
复制
/sitecore/system/Settings/Html Editor Profiles/Rich Text Default/Configuration Type

如果配置文件包含一个名为Configuration Type的子项,那么它将使用该项,否则它将使用配置中指定的默认设置。默认情况下,其他配置文件不包含此设置项。如果您希望其他配置文件(或自定义配置文件)使用特定(或不同)配置,那么请确保您的配置文件包含一个名为Configuration Type的模板类型的Html Editor Configuration Type项。这可能是非常有用的多地点方案。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21485295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档