配置富文本编辑器 configure-the-rich-text-editor

CAUTION
AEM 6.4已结束扩展支持,本文档将不再更新。 有关更多详细信息,请参阅 技术支助期. 查找支持的版本 此处.

富文本编辑器(RTE)为作者提供了多种用于编辑其文本内容的功能。 提供了图标、选择框、工具栏和菜单,以体验所见即所得的文本编辑体验。

要了解如何使用RTE功能进行创作,请参阅 使用富文本编辑器进行创作. RTE可配置为启用、禁用和扩展创作组件中可用的功能。 以下工作流说明了在Experience Manager中完成RTE配置任务的建议顺序。

配置富文本编辑器的典型工作流

图:配置富文本编辑器的典型工作流

了解触屏优化UI和经典UI understand-touch-enabled-ui-and-classic-ui

触屏优化UI是AEM的标准UI。 Adobe引入了触屏UI, 响应式设计 对于创作环境,在版本5.6中。触屏UI专为触控和桌面设备而设计。 UI与原始经典UI有很大不同。

触屏UI中的富文本编辑器工具栏

图:触屏UI中的富文本编辑器工具栏

经典UI中的富文本编辑器工具栏

图:经典UI中的富文本编辑器工具栏

各种编辑模式 editingmodes

作者可以使用不同的组件模式在AEM中创建和编辑文本内容。 在不同编辑模式下,用于创作内容和设置内容格式的工具栏选项以及启用RTE的组件的用户体验因RTE配置而异。

编辑模式
编辑区域
建议启用的功能
触屏 UI
经典 UI
内嵌
就地编辑,以便进行快速、细微的编辑;不打开对话框即可设置格式
最小RTE功能
Y
Y
RTE全屏
涵盖整个页面
所有必需的RTE功能
Y
N
对话框
对话框,但不涵盖整个页面
经典UI中所有必需的RTE功能;谨慎地启用触屏UI中的功能
Y
Y
全屏对话框
与全屏模式相同;包含对话框的字段以及RTE
所有必需的RTE功能
Y
N
NOTE
在触屏UI的内联编辑模式下,源编辑功能不可用。 不能以全屏模式拖动图像。 所有其他功能在所有模式下均可工作。

内联编辑 inline-editing

打开(慢速双击/单击)后,可以在页面内编辑内容。 此时会显示一个包含基本选项的紧凑工具栏。

在触屏UI中使用基本工具栏进行内联编辑

图:在触屏UI中使用基本工具栏进行内联编辑

在经典UI中,慢速双击组件可进行内联编辑,橙色大纲会突出显示内容。 如果内容查找器处于打开状态,则窗口顶部将显示一个包含可用RTE格式选项的工具栏。 如果内容查找器未打开,则不会显示格式选项,您只能进行基本文本编辑。

全屏编辑 full-screen-editing

AEM组件可以以全屏视图打开,这会隐藏页面内容并占据可用屏幕。 考虑全屏编辑内联编辑的详细版本,因为它提供了最多的编辑选项。 可通过单击 rte_fullscreen ,使用内联编辑模式时从紧凑工具栏中选择。

对话框全屏模式提供了详细的RTE工具栏以及对话框模式中可用的选项和组件。 该变量仅适用于包含RTE和其他组件的对话框。

在触屏UI中以全屏模式编辑时,显示的详细RTE工具栏

图:在触屏UI中以全屏模式编辑时,显示的详细RTE工具栏

对话框编辑 dialog-editing

在经典UI中双击组件时,将打开一个用于编辑内容的对话框。 此时将打开现有页面顶部的对话框。 在某些特定情况下,会以弹出窗口的形式打开该对话框。 例如,当文本组件是多列页面布局中列的一部分,且可用于对话框的区域较少时。

触屏UI中的对话框编辑模式

图:触屏UI中的对话框编辑模式

经典UI中包含用于编辑的详细工具栏的对话框

图:经典UI中包含用于编辑的详细工具栏的对话框

关于RTE插件和关联的功能 aboutplugins

该功能通过一系列插件提供,每个插件均具有:

  • A features 属性:

    • 用于激活或停用该插件的基本功能。
    • 可以使用标准化过程进行配置。
  • 在适当情况下,需要进行专门配置的更多属性和选项。

RTE的基本功能由的值激活或停用 features 属性。

下表列出了当前的插件,其中显示:

  • 包含API文档链接的插件ID。 ID用作 激活插件.
  • 的允许值 features 属性。
  • 插件提供的功能描述。
插件ID
功能
描述
编辑
剪切复制paste-default paste-plaintext paste-wordhtml
剪切、复制和粘贴三种模式.
findreplace
查找替换
查找并替换.
格式
粗斜体下划线
基本文本格式.
图像
图像
基本图像支持(从内容或内容查找器中拖动)。 根据浏览器的不同,作者支持的行为各不相同
要定义此值,请参阅 选项卡大小.
证明
justifleft justifcenter justifright
段落对齐。
链接
modifylink取消链接锚点
超链接和锚点.
列表
已排序的未排序缩进输出
此插件可同时控制 缩进和列表;包括嵌套列表。
misctools
specialchars sourceedit
其他工具允许作者输入 特殊字符 或编辑HTML源。 此外,您还可以添加整体 特殊字符范围 要定义自己的列表。
参数格式
paraformat
默认段落格式为“段落”、“标题1”、“标题2”和“标题3”(<p>, <h1>, <h2><h3>)。 您可以 添加更多段落格式 或扩展列表。
拼写检查
checktext
语言感知拼写检查程序.
样式
样式
支持使用CSS类的样式。 添加新的文本样式 如果您要添加(或扩展)自己的样式范围以与文本一起使用。
子上标
下标上标
基本格式的扩展,添加子和超脚本。
表removetable insertrow removerow insertcolumn removecolumn cellprops mergecells splitcell selectrow selectcolumns
请参阅 配置表样式,但需为整个表或单个单元格添加自己的样式。
撤消
撤消重做
历史记录大小 撤消和重做 操作。
NOTE
对话框模式不支持全屏插件。 使用 dialogFullScreen 设置以配置全屏模式的工具栏。

了解配置路径和位置 understand-the-configuration-paths-and-locations

RTE编辑模式(和UI) 您为作者提供的配置详细信息在您 激活RTE插件:

编辑模式
触屏UI的位置
经典UI的位置
内嵌
cq:editConfig/cq:inplaceEditing
cq:editConfig/cq:inplaceEditing
全屏
cq:editConfig/cq:inplaceEditing
不适用
对话框
cq:dialog
dialog
全屏对话框
cq:dialog
不适用
NOTE
请勿在下命名节点 cq:inplaceEditing as config. 开 cq:inplaceEditing 节点,定义以下属性:
  • 名称: configPath
  • 类型: String
  • :包含实际配置的节点的路径
请勿将RTE配置节点命名为 config. 否则,RTE配置将仅对管理员生效,而对组中的用户不生效 content-author.

配置以下仅在触屏UI中在对话框编辑模式中应用的属性:

  • useFixedInlineToolbar:在RTE节点(一个具有sling:resourceType=的节点)上定义的此布尔属性 cq/gui/components/authoring/dialog/richtext) True,以修复RTE工具栏而不是浮动工具栏。

    当此属性为true时,富文本编辑默认在“foundation-contentloaded”事件中启动。

    要阻止出现这种情况,请设置属性 customStart to True和会触发“rte-start”事件以开始RTE编辑。 当此属性为“true”时,默认行为(单击时启动rte)不起作用。

  • customStart:将RTE节点上定义的此布尔属性设置为 True,通过触发事件来控制何时启动RTE rte-start.

  • rte-start:在 contenteditable-div ,用于开始编辑RTE。 仅当 customStart 已设置为true。

在触屏启用对话框中使用RTE时,设置属性 useFixedInlineToolbar 为true是必须避免出现问题的。

就地自定义编辑 customizing-in-place-editing

您可以通过配置以下属性来定义文本编辑器启动的HTML选择器:

  • editElementQuery — 定义于 cq:InplaceEditingConfig,此属性用于指定HTML元素的选择器,将在该选择器中启动文本组件的内嵌编辑。 如果未指定,则直接在文本组件HTML上启动内联编辑。
  • textPropertyName — 定义于 cq:InplaceEditingConfig,此属性用于指定将保存在内容节点中的属性名称,文本组件的HTML值将在内联编辑后保留在该节点中。

对话框模式对应的属性为 name.

通过激活插件启用RTE功能 enable-rte-functionalities-by-activating-plug-ins

RTE功能通过一系列插件提供,每个插件都具有features属性。 您可以配置features属性以启用或禁用每个插件的各种功能。

有关RTE插件的详细配置,请参阅 如何激活和配置RTE插件.

下载此配置示例,以了解如何配置RTE。 在此包中,已启用所有功能。

获取文件

NOTE
核心组件文本组件 允许模板编辑器将用户界面中的许多RTE插件配置为内容策略,从而无需进行技术配置。 内容策略可以与RTE用户界面配置配合使用,如所述。 有关更多信息,请参阅 RTE用户界面设置和内容策略, 创建页面模板核心组件开发人员文档.
NOTE
出于参考目的,默认的文本组件(作为标准安装的一部分提供)可在以下位置找到:
  • /libs/wcm/foundation/components/text
  • /libs/foundation/components/text
要创建自己的文本组件,请复制上述组件,而不是编辑这些组件。

配置RTE工具栏 dialogfullscreen

AEM允许您针对不同的编辑模式以不同方式配置富文本编辑器的UI。 下面提供了默认设置。 您可以根据要求覆盖这些默认值。

要获得最佳创作体验:

  • 在浮动对话框中,仅启用那些没有弹出窗口的插件,因为浮动对话框的大小较小。
  • 在全屏对话框中,启用所有必需的插件,甚至包含较大弹出窗口的插件,例如 Paste 插件。 使用 dialogFullScreen 配置如下所述。
<uiSettings jcr:primaryType="nt:unstructured">
  <cui jcr:primaryType="nt:unstructured">
    <inline
      jcr:primaryType="nt:unstructured"
      toolbar="[format#bold,format#italic,format#underline,#justify,#lists,links#modifylink,links#unlink,#paraformat]">
      <popovers jcr:primaryType="nt:unstructured">
        <justify
          jcr:primaryType="nt:unstructured"
          items="[justify#justifyleft,justify#justifycenter,justify#justifyright]"
          ref="justify"/>
        <lists
          jcr:primaryType="nt:unstructured"
          items="[lists#unordered,lists#ordered,lists#outdent,lists#indent]"
          ref="lists"/>
        <paraformat
          jcr:primaryType="nt:unstructured"
          items="paraformat:getFormats:paraformat-pulldown"
          ref="paraformat"/>
      </popovers>
    </inline>
    <dialogFullScreen
      jcr:primaryType="nt:unstructured"
      toolbar="[format#bold,format#italic,format#underline,justify#justifyleft,justify#justifycenter,justify#justifyright,lists#unordered,lists#ordered,lists#outdent,lists#indent,links#modifylink,links#unlink,table#createoredit,#paraformat,image#imageProps]">
      <popovers jcr:primaryType="nt:unstructured">
        <paraformat
          jcr:primaryType="nt:unstructured"
          items="paraformat:getFormats:paraformat-pulldown"
          ref="paraformat"/>
      </popovers>
    </dialogFullScreen>
    <tableEditOptions
      jcr:primaryType="nt:unstructured"
      toolbar="[table#insertcolumn-before,table#insertcolumn-after,table#removecolumn,-,table#insertrow-before,table#insertrow-after,table#removerow,-,table#mergecells-right,table#mergecells-down,table#mergecells,table#splitcell-horizontal,table#splitcell-vertical,-,table#selectrow,table#selectcolumn,-,table#ensureparagraph,-,table#modifytableandcell,table#removetable,-,undo#undo,undo#redo,-,table#exitTableEditing,-]">
    </tableEditOptions>
  </cui>
</uiSettings>

内联模式和全屏模式使用不同的UI设置。 工具栏属性用于指定工具栏的按钮。 例如,如果按钮本身是功能(例如, Bold),则指定为 PluginName#FeatureName (例如, links#modifylink)。 如果按钮是弹出窗口(包含插件的某些功能),则会指定为 #PluginName (例如, #format)。 分隔符( |)。

内嵌或全屏模式下的弹出节点包含正在使用的浏览器的列表。 下的每个子节点 popovers 节点以插件命名(例如, format)。 它有一个资产 items 包含插件的功能列表(例如, format#bold)。

RTE用户界面设置和内容策略 rtecontentpolicies

管理员可以使用内容策略(例如,不执行上述配置)来控制RTE选项。 内容策略用于定义组件在 可编辑模板. 例如,如果将使用RTE的文本组件与可编辑的模板一起使用,则内容策略可以定义提供粗体选项和一些段落格式选项。 内容策略可重复使用,并可跨多个模板应用。

AEM 6.4 Service Pack 3之后,RTE流程中从用户界面配置到内容策略的下游可用选项。

  • 用户界面配置设置定义可用于内容策略的选项。
  • 如果RTE的用户界面配置已删除或未启用项目,则内容策略无法对其进行配置。
  • 作者只能访问用户界面配置和内容策略提供的此类功能。

例如,您可以在 文本核心组件文档.

自定义工具栏图标和命令之间的映射 iconstoolbar

您可以自定义RTE工具栏中显示的Coral图标与可用命令之间的映射。 除Coral图标外,您不能使用任何其他图标。

  1. 创建名为的节点 iconsuiSettings/cui.

  2. 为下方的各个图标创建节点。

  3. 在每个图标节点上,指定一个Coral图标和一个映射到该图标的命令。

下面是一个示例代码片段,用于将命令“粗体”映射到名为的Coral图标 textItalic.

<text jcr:primaryType="nt:unstructured" sling:resourceType="cq/gui/components/authoring/dialog/richtext" name="./text" useFixedInlineToolbar="{Boolean}true">
    <rtePlugins jcr:primaryType="nt:unstructured">
        <format jcr:primaryType="nt:unstructured" features="bold,italic"/>
    </rtePlugins>
    <uiSettings jcr:primaryType="nt:unstructured">
        <cui jcr:primaryType="nt:unstructured">
            <inline jcr:primaryType="nt:unstructured"
                toolbar="[format#bold,format#italic,format#underline,links#modifylink,links#unlink]">
            </inline>
            <icons jcr:primaryType="nt:unstructured">
                <bold jcr:primaryType="nt:unstructured"
                    command="format#bold"
                    icon="textItalic"/>
            </icons>
        </cui>
    </uiSettings>
</text>

切换到CoralUI 2富文本编辑器 switch-to-coralui-rich-text-editor

在页面上,您可以包含CoralUI 2 RTE clientlib或CoralUI 3 RTE clientlib。 默认情况下,富文本编辑器包含CoralUI 3 RTE clientlib。 要切换到CoralUI 2 RTE,请执行以下步骤。

NOTE
Adobe不建议将切换作为最佳实践。 切换到CoralUI 2 RTE作为最后手段。 如果CoralUI 2 RTE的自定义插件不依赖RTE内部版本(如类),则此插件可与CoralUI 3 RTE配合使用。 如果要对CoralUI 3 RTE使用自定义插件,请使用 rte.coralui3 库。
  1. 覆盖节点 /libs/cq/gui/components/authoring/editors/clientlibs/core/apps,并执行以下操作:

    • 替换 rte.coralui3 with rte.coralui2 (对于依赖关系属性)。
    • 替换 cq.authoring.editor.core.inlineediting.rte.coralui3 with cq.authoring.editor.core.inlineediting.rte.coralui2 (对于嵌入属性)。
    • 替换 cq.authoring.rte.coralui3 with cq.authoring.rte.coralui2 (对于嵌入属性)。
  2. 覆盖节点 /libs/cq/gui/components/authoring/dialog/richtext/clientlibs/rte/coralui3/libs/cq/gui/components/authoring/dialog/richtext/clientlibs/rte/coralui2/apps.

    删除类别 cq.authoring.dialog/apps/cq/gui/components/authoring/dialog/richtext/clientlibs/rte/coralui3 并将其添加到 /apps/cq/gui/components/authoring/dialog/richtext/clientlibs/rte/coralui2.

  3. rte.coralui3 to rte.coralui2. 例如,在覆盖节点后 /libs/mcm/campaign/components/touch-ui/clientlibs/rte/apps,请从 rte.coralui3 to rte.coralui2.

  4. 覆盖节点 cq/ui/widgets/apps. 替换依赖项 cq.rte 节点 /apps/cq/ui/widgets with cq.coralui2.rte.

NOTE
CoralUI 2 RTE对插件对话框使用handlebars模板。 因此,CoralUI 2 RTE clientlib对handlebars clientlib存在依赖关系。 CoralUI 3 RTE不使用handlebars模板,并且没有任何关联的依赖项。 如果您的自定义插件使用handlebars模板,请在网页中包含handlebars clientlib。

更多信息 further-information

有关配置RTE的更多信息,请参阅 AEM Widget API 引用。

特别是,要查看可用的插件和相关选项,请执行以下操作:

  • CQ.form.RichText 组件提供了用于编辑样式化文本信息(富文本)的表单字段。 要了解富文本表单的所有可用参数,请参阅配置选项。

  • 富文本组件提供了多种功能,其中使用了 CQ.form.rte.plugins.Plugin. 对于每个插件:

    • 有关可启用(或禁用)的功能的详细信息,请参阅功能。
    • 有关相应插件的详细配置,请参阅配置选项以了解所有可用参数。
  • 还提供了有关链接HTML规则的更多信息。

以上选项可用于扩展和自定义您自己的RTE。 例如,要在创建链接时列出页面中可用的锚点,您可以自行提供 LinkPlugin.

已知限制 known-limitations

AEM RTE功能具有以下限制:

  • 仅在AEM组件对话框中支持RTE功能。 向导或Foundation表单(如 页面属性基架 在触屏UI中。

  • AEM无法运行 混合设备.

  • 请勿命名RTE配置节点 config. 否则,RTE配置将仅对管理员生效,而对组中的用户不生效 content-author.

  • RTE不支持嵌入内容的内联框架或iFrame。

recommendation-more-help
5ce3024a-cbea-458b-8b2f-f9b8dda516e8