3

我正在尝试删除<p>CQ5(版本 5.6.0.20130125)中标签的自动添加。我试图将这些属性添加到我正在使用但没有效果的文本组件中。(来源

removeSingleParagraphContainer   true
singeParagraphContainerReplacement    (empty string)

我也试过这个解决方案。再次,没有效果。

是否可以禁用自动添加<p>标签?

感谢您的任何想法

编辑我已经尝试过这个答案,但 CQ 仍然<p>在我的代码中添加标签。例如,我有这个 HTML 代码

<strong>Headquarters:</strong>
<p>MY - COMPANY a.s.<br>
Random Street 77<br>
Random City</p>

在我提交后,代码更改为

<p><strong>Headquarters:</strong></p>
<p>MY - COMPANY a.s.<br>
Random Street 77<br>
Random City</p>

我的 RTE 看起来像这样

<text jcr:primaryType="cq:widget"
      hideLabel="{Boolean}true"
      name="./text"
      xtype="richtext">
  <htmlRules jcr:primaryType="nt:unstructured">
      <docType jcr:primaryType="nt:unstructured">
          ...
      </docType>
      <blockHandling
          jcr:primaryType="nt:unstructured"
          removeSingleParagraphContainer="{Boolean}true"/>
  </htmlRules>
</text>

EDIT2这就是我的层次结构的样子 在此处输入图像描述

4

5 回答 5

11

只要您只创建一个段落,您就可以通过将属性设置为来防止 RTE 用<p>标签包围您的文本。removeSingleParagraphContainertrue

使用 Mac OS X 上的 Chrome(至少),按住shift时按住enter会插入换行符而不是分段符,因此您仍然可以创建多行文本。由于您在上一个问题中说您正在使用该misctools插件,因此您可以使用源编辑视图随时查看标记。

最后,要设置removeSingleParagraphContainer属性,您需要在对话框中的节点blockHandling下创建另一个名为的子节点。htmlRules你不需要弄乱singeParagraphContainerReplacement属性,但如果你这样做了,你会在同一个节点上设置它:

<rtePlugins jcr:primaryType="nt:unstructured">
    ...
</rtePlugins>
<htmlRules jcr:primaryType="nt:unstructured">
    <docType jcr:primaryType="nt:unstructured">
        ...
    </docType>
    <blockHandling
        jcr:primaryType="nt:unstructured"
        removeSingleParagraphContainer="{Boolean}true"/>
</htmlRules>

编辑关于您的编辑:使用插件的源代码编辑功能并粘贴此确切的文本,在 Mac OS X 上的 Chrome 中为我misctools保存和加载没有标签:p

<strong>Headquarters:</strong><br>
MY - COMPANY a.s.<br>
Random Street 77<br>
Random City

您确定您的 dialog.xml 部署正确吗?也许仔细检查您的组件的对话框层次结构是否符合您在 CRXDE Lite 中的预期:

CRXDE Lite 文本节点

于 2013-07-31T11:10:38.643 回答
2

该属性removeSingleParagraphContainer应添加到节点中xtypeis richtext。例子:

<text jcr:primaryType="cq:Widget"
   hideLabel="{Boolean}true"
   name="./text"
   height="{Long}520"
   removeSingleParagraphContainer="{Boolean}true"
   xtype="richtext">

CRXDE Lite:crxde lite 中的配置

注意:且此配置仅用于单段。

参考:有关 removeSingleParagraphContainer 的更多信息

于 2015-10-13T07:59:24.310 回答
1

尝试在您的代码中使用 @context='html' 。这使您可以将文本的上下文设置为 html,因此即使对话框值中有标签,它们也会被呈现为等效的 html,而不是页面上的标签。例如:{properties.something @context='html'}

于 2017-07-17T05:31:27.750 回答
0

对于 Touch UI,您还可以在 AEM Touch UI 中创建自定义 paraformat 选项,cq/gui/components/authoring/dialog/richtext,然后使用 Java Backend、Sling Model 对输出进行文本转换,以便您的 Sightly HTL 可以按预期呈现输出 Html。对于完整的教程,你可以在这里找到它。

https://sourcedcode.com/blog/aem/aem-richtext-remove-p-tag-removesingleparagraphcontainer-for-touch-ui

于 2021-10-29T18:15:38.587 回答
-2

尝试在代码中使用@context='unsafe'。你应该能够摆脱不必要的 HTML 标签,为我工作

于 2015-12-30T07:13:23.400 回答