如何防止 AEM 从默认值包含 link 的 RTE 中剥离 href?

How do I prevent AEM stripping out the href from a RTE that has a default value which contains a link?

我为 AEM 中提交的 RTE 设置了默认值。该值在对话框首次打开时显示正确,但在保存并重新打开时,href 已从 A 标签中删除。 (这是一个外部link)

如果此 href 然后使用 RTE link 按钮重新添加,它会正常工作,但自然我希望它第一次能正常工作。

我是 AEM 的新手,目前有以下内容(注意:对于此示例,我更改了 URL 并复制到测试版本):

<branchResultsCopy
    jcr:primaryType="cq:Widget"
    externalStyleSheets="[/etc/designs/rtg/clientlibs/author/style/source/rte.css]"
    fieldLabel="Branch results copy"
    name="./branchresultscopy"
    defaultValue="&lt;p&gt;If you'd like information about blah blah blah, visit our &lt;a target='_blank' link-checker='skip' href='https://www.testurl.com'&gt;Link text&lt;/a&gt; page.&lt;/p&gt;"
    xtype="richtext">
        <htmlRules
            jcr:primaryType="nt:unstructured">
                <links
                    jcr:primaryType="nt:unstructured"
                    protocols="[http://,https://]"/>
        </htmlRules>
        <rtePlugins
            jcr:primaryType="nt:unstructured">
                <edit
                    jcr:primaryType="nt:unstructured">
                        <htmlPasteRules
                            jcr:primaryType="nt:unstructured">
                                <allowBasics
                                    jcr:primaryType="nt:unstructured"
                                    anchor="{Boolean}true"
                                     bold="{Boolean}true"
                                />
                        </htmlPasteRules>
                </edit>
                <format
                    jcr:primaryType="nt:unstructured"
                    features="[bold,italic]"/>
                <lists
                    jcr:primaryType="nt:unstructured"
                    features="[ordered,unordered]"/>
                <links
                    jcr:primaryType="nt:unstructured"
                    features="*"/>
        </rtePlugins>
</branchResultsCopy>

我认为您的主要问题是 defaultValue 字段中使用的语法。 我只是通过将 link 添加到文本组件来自己进行测试,然后通过 CRXDE 获取 jcr:content 的 ./text 并将其直接复制粘贴到组件的 defaultValue 字段。

然后我将组件的新实例添加到页面,对其进行编辑,默认值在 RTE 中,我只需单击“保存”,link 保持不变。

我做了一个组件包来检查 AEM 放入 XML 的内容,至少可以说这很奇怪,所有 > 字符都保持原样,而所有 < 都被转义了。

这是我在包 dialog.xml:

中的默认值
defaultValue="&lt;p>Timeless beauty. Classic simplicity. It must be the circle! Each &lt;a href=&quot;http://google.ca&quot;>Geometrixx-brand&lt;/a> circle is handcrafted from an infinite number of very skinny isoceles triangles arrange in, well, a circle! We guarantee that our circles are not simply&lt;i> n&lt;/i>-gons, where &lt;i>n&lt;/i> is a very large number; ours are guaranteed round, no matter how closely you look. test&lt;/p>&#xa;"

请注意,他们使用 " 作为属性。

另外,一个小警告,RTEPlugin 不喜欢 link-checker="skip" 属性,它将把它去掉。

如果你想让它保留 link-checker,你需要告诉它你有一个自定义属性要处理。

我知道如何做到这一点的唯一方法是通过经典对话框 这需要在 RTEPlugin 的 linkDialogConfig 中的 linkAttributes 添加一个新节点。

像这样

<skipchecker
    jcr:primaryType="nt:unstructured"
    attribute="link-checker"
    fieldDescription="Skip link checker"
    fieldLabel="Skip Checker"
    name="./linkdialog/skip"
    xtype="selection">   
        <options jcr:primaryType="cq:WidgetCollection">
            <noskip
                jcr:primaryType="nt:unstructured"
                text="No Skip"
                value=""/>  
            <skip
                jcr:primaryType="nt:unstructured"
                text="Skip"
                value="skip"/>         
        </options>
</skipchecker>

虽然所有这些都是使用非视觉组件进行测试,但您没有提到您使用的是哪个版本的文本组件。 Sightly 组件的工作方式可能略有不同,但经典对话框是相同的,应该使用相同的插件。