如何在 RichText 小部件上插入 <strong>-Tags 而不是 <b>-Tags
Posted
技术标签:
【中文标题】如何在 RichText 小部件上插入 <strong>-Tags 而不是 <b>-Tags【英文标题】:How to insert <strong>-Tags instead of <b>-Tags on RichText widget 【发布时间】:2015-05-11 17:16:00 【问题描述】:在一个对话框中,我只使用粗体插件配置了 RichText 小部件。
我现在的问题是,我必须更改它,以便内容不会保存在 <b>
-Tags 内,而是保存在 <strong>
-tags 内。
我试图通过覆盖CQ.form.rte.commands.DefaultFormatting.getTagNameForCommand
函数来解决这个问题。结果如下所示:
getTagNameForCommand: function(cmd)
var cmdLC = cmd.toLowerCase();
var tagName = null;
switch (cmdLC)
case "bold":
tagName = "strong";
break;
case "italic":
tagName = "i";
break;
case "underline":
tagName = "u";
break;
case "subscript":
tagName = "sub";
break;
case "superscript":
tagName = "sup";
break;
return tagName;
不幸的是,它只有在我打开对话框并设置“粗体”时才有效。再次保存并重新打开对话框后,无法再删除<strong>
-标签。
我还尝试覆盖/扩展CQ.form.rte.plugins.FormatPlugin
和CQ.form.rte.commands.DefaultFormatting
以支持“强”命令。这也会导致同样的问题。
由于一些 SEO 问题,我的客户想要 <strong>
-tag。他不会接受<b>
-Tag。
有办法解决吗?
问候 索伦
编辑<strong> tag getting replaced to <b> tag in CQ5 上给出的解决方案不起作用。添加描述的配置不会保存强标签。据我了解,该解决方案仅适用于 MiscTools。
【问题讨论】:
<strong> tag getting replaced to <b> tag in CQ5的可能重复 【参考方案1】:在 AEM 6.3 中,我已经能够让 RTE 使用 strong 和 em 标签代替 b 和 i 通过将以下节点作为同级节点添加到对话框中的 uiSettings 和 rtePlugins 节点。
<htmlRules jcr:primaryType="nt:unstructured">
<docType jcr:primaryType="nt:unstructured">
<typeConfig jcr:primaryType="nt:unstructured"
useSemanticMarkup="Booleantrue">
<semanticMarkupMap
b="strong"
i="em"/>
</typeConfig>
</docType>
</htmlRules>
我还注意到,您必须在以前编写的富文本内容中添加一个空格,以便让组件注意到更改并交换标签。
【讨论】:
这是我为此找到的最佳解决方案。它也适用于我们的 6.5 实例。【参考方案2】:我想在 AEM6 中做同样的事情。我采取了复制相关js的方法,/libs/cq/ui/rte/core/commands/DefaultFormatting.js
并将其添加到apps内容文件夹下,/apps/cq/ui/rte/core/commands/DefaultFormatting.js
然后我修改了在apps下复制的DefaultFormatting.js的副本。 AEM6 然后似乎使用“覆盖”技术来应用强标签。
【讨论】:
【参考方案3】:请按照answer中提到的步骤进行操作
和
然后在typeConfig
节点上添加boolean property useSemanticMarkup
为真。
【讨论】:
以上是关于如何在 RichText 小部件上插入 <strong>-Tags 而不是 <b>-Tags的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:测试时如何正确获取 RichText 数据?