如何防止 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="<p>If you'd like information about blah blah blah, visit our <a target='_blank' link-checker='skip' href='https://www.testurl.com'>Link text</a> page.</p>"
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="<p>Timeless beauty. Classic simplicity. It must be the circle! Each <a href="http://google.ca">Geometrixx-brand</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<i> n</i>-gons, where <i>n</i> is a very large number; ours are guaranteed round, no matter how closely you look. test</p>
"
请注意,他们使用 " 作为属性。
另外,一个小警告,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 组件的工作方式可能略有不同,但经典对话框是相同的,应该使用相同的插件。
我为 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="<p>If you'd like information about blah blah blah, visit our <a target='_blank' link-checker='skip' href='https://www.testurl.com'>Link text</a> page.</p>"
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="<p>Timeless beauty. Classic simplicity. It must be the circle! Each <a href="http://google.ca">Geometrixx-brand</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<i> n</i>-gons, where <i>n</i> is a very large number; ours are guaranteed round, no matter how closely you look. test</p>
"
请注意,他们使用 " 作为属性。
另外,一个小警告,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 组件的工作方式可能略有不同,但经典对话框是相同的,应该使用相同的插件。