我正在尝试在 Tridion 中创建一个 GUI 扩展,在单击按钮时将特定的 html 插入到 RTF 中......我有工具栏按钮和弹出窗口来通知用户。但是,当我在插入 HTML“</div><div class='Page'>”时在弹出窗口上单击“确定”时,它会插入“<div class='Page'/>”。
我发现 applyHTML 方法正在修改正在插入的内容。是否有任何其他功能/方法可以准确插入我所指出的内容,我的意思是缺少结束标签或打开标签的无效 html?
如果您需要进行无效标记,请考虑使用纯文本字段。不确定这会在多大程度上改变您现有的扩展和内容模型,但您可以在纯文本字段中输入任何内容,包括似乎是某种“拆分”或分割占位符的内容。
</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'>
中间的嵌入字段集。它还允许您在将来更改类和标签,而无需更改扩展名。
请参阅我写的关于富文本字段中的自定义标签的帖子中的选项,其中包括:
class="page-split"
. 您甚至可以将其样式化为某种方式(<hr/>
例如视觉上),然后将其模板化为最终标记中所需的任何内容。[[end-page]][[start-page]
”您可以使用扩展插入其中的任何一个,可选择将它们设置为在 CME 中以某种方式显示。
我喜欢为作者提供在富文本字段中插入功能的更简单方法,但是将特定 HTML(尤其是无效 HTML)插入组件的问题在于将此功能硬编码到内容中。您将遇到迁移和设计更改的问题。
考虑利用 Tridion 如何将设计与内容分开。
大概当你说:</div><div class='Page'>
,你的意思是<div class='Page'></div>
。如果是这样,那么除非您可以直接控制 XML 整理,否则唯一剩下的方法(IMO)是确保 div 有一些内容。最常见的方法是插入一个不间断的空格。
<div class='Page'> </div>