如何在 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 小部件。

我现在的问题是,我必须更改它,以便内容不会保存在 &lt;b&gt;-Tags 内,而是保存在 &lt;strong&gt;-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;

不幸的是,它只有在我打开对话框并设置“粗体”时才有效。再次保存并重新打开对话框后,无法再删除&lt;strong&gt;-标签。

我还尝试覆盖/扩展CQ.form.rte.plugins.FormatPluginCQ.form.rte.commands.DefaultFormatting 以支持“强”命令。这也会导致同样的问题。

由于一些 SEO 问题,我的客户想要 &lt;strong&gt;-tag。他不会接受&lt;b&gt;-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 使用 strongem 标签代替 b i 通过将以下节点作为同级节点添加到对话框中的 uiSettingsrtePlugins 节点。

<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 数据?

我们如何在flutter Text或RichText中使用上标和下标文本

在小部件上插入临时图像[关闭]

如何更改小部件菜单容器

带有媒体上传按钮的自定义Wordpress窗口小部件,在每个窗口小部件上插入相同的图像