11

我正在尝试在 Tridion 中创建一个 GUI 扩展,在单击按钮时将特定的 html 插入到 RTF 中......我有工具栏按钮和弹出窗口来通知用户。但是,当我在插入 HTML“</div><div class='Page'>”时在弹出窗口上单击“确定”时,它会插入“<div class='Page'/>”。

我发现 applyHTML 方法正在修改正在插入的内容。是否有任何其他功能/方法可以准确插入我所指出的内容,我的意思是缺少结束标签或打开标签的无效 html?

4

2 回答 2

6

如果您需要进行无效标记,请考虑使用纯文本字段。不确定这会在多大程度上改变您现有的扩展和内容模型,但您可以在纯文本字段中输入任何内容,包括似乎是某种“拆分”或分割占位符的内容。

</div><div class='Page'>

要保留富文本功能并遵循一些典型的 Tridion 实践,请考虑以下其中一项。

一次完成所有标记更改

假设您的最终标记将有一个 open<div>和 close </div>,考虑让您的扩展包装一整套选定的富文本。在此过程中和更新组件之前,允许作者选择“拆分”的位置并将整个更新保存到 RTF。

使用嵌入式模式和模板代码创建“拆分”

嵌入式架构字段是一种更简单的拆分内容的方法。作者创建了一组新的嵌入字段,模板代码可以将其更改为选项卡、段落,或者在您的情况下可能是页面(分页?)。

据我了解,“段落”嵌入式模式可以处理这个用例。

<!-- TemplateBeginRepeat name="Component.Fields.Paragraph" -->
<div class='Page'>
<!-- author-entered content -->
</div>
<!-- TemplateEndRepeat -->

这将创建</div><div class='Page'>中间的嵌入字段集。它还允许您在将来更改类和标签,而无需更改扩展名。

改为插入非 HTML“合并字段”

请参阅我写的关于富文本字段中的自定义标签的帖子中的选项,其中包括:

  • Content Manager Explorer 中的 CSS 类,例如class="page-split". 您甚至可以将其样式化为某种方式(<hr/>例如视觉上),然后将其模板化为最终标记中所需的任何内容。
  • 合并字段占位符标签,例如“ [[end-page]][[start-page]
  • 自定义 HTML5 节点(如果必须)

您可以使用扩展插入其中的任何一个,可选择将它们设置为在 CME 中以某种方式显示。

我喜欢为作者提供在富文本字段中插入功能的更简单方法,但是将特定 HTML(尤其是无效 HTML)插入组件的问题在于将此功能硬编码到内容中。您将遇到迁移和设计更改的问题。

考虑利用 Tridion 如何将设计与内容分开。

于 2013-01-03T03:10:30.760 回答
0

大概当你说:</div><div class='Page'>,你的意思是<div class='Page'></div>。如果是这样,那么除非您可以直接控制 XML 整理,否则唯一剩下的方法(IMO)是确保 div 有一些内容。最常见的方法是插入一个不间断的空格。

<div class='Page'>&#160;</div>
于 2013-01-02T16:45:50.983 回答