禁用自动添加<p>标签

4

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

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>

编辑2 这是我的层次结构图示 在此输入图片描述

5个回答

12

只要您只创建一个段落,就可以将RTE保持不用 <p> 标签包围文本的方法是将 removeSingleParagraphContainer 属性设置为 true

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

最后,要设置 removeSingleParagraphContainer 属性,您需要在对话框中的 htmlRules 节点下再创建另一个名为 blockHandling 的子项。您不需要操纵 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>

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

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

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

CRXDE Lite文本节点


我已经尝试过了,但似乎不起作用...请检查我的问题编辑。 - Jakolcz
@Jakolcz - 我想我的“只要你只创建一个段落”条件没有表达清楚。除非仅有一个段落标签且它包含整个字符串,否则您的HTML中不能有任何段落标签。如果您将p标签移除并在关闭strong标签后放置br标记,会发生什么? - mszu
@Jakolcz - 我增加了一些额外的上下文信息。如果您只输入一个单词,系统会自动添加<p>标记吗?您使用的浏览器是IE吗? - mszu
是的,当我添加单个字符时,CQ也会添加p标签。我还在我的问题中添加了屏幕截图。 - Jakolcz
对我来说很好用。它只在我使用回车时添加<p>,如果我使用shift+enter,则HTML仍然干净!非常好。 哥们,你是怎么发现这个的!?我在adobe文档中找不到任何相关信息... - Fernando Teles
显示剩余5条评论

2

xtyperichtext 的节点中应添加属性 removeSingleParagraphContainer。 示例:

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

CRXDE Lite:在 CRXDE Lite 中配置 configuration in crxde lite

注意: 这个配置仅用于单个段落。

参考: 更多关于 removeSingleParagraphContainer 的信息


1

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

例如: {properties.something @context='html'}

0

-2

尝试在您的代码中使用@context='unsafe'。您应该能够摆脱不必要的HTML标签,这对我很有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接