我正在尝试在Tridion中创建一个GUI扩展,我在单击按钮时将特定的html插入到RTF中....我有工具栏按钮并弹出以通知用户。但是,当我插入HTML“< / div>< div class ='Page'>”时,在弹出窗口中单击“确定”时,会插入“< div class ='Page'/>”。
我发现applyHTML方法是什么修改插入的内容。有没有其他功能/方法可以准确插入我指示的内容,我的意思是无效的html缺少结束标签或打开标签?
答案 0 :(得分:6)
如果需要进行无效标记,请考虑使用纯文本字段。不确定这会改变您现有的扩展和内容模型的数量,但您可以在纯文本字段中输入任何内容,包括似乎是某种“拆分”或划分占位符。
</div><div class='Page'>
要保留富文本功能并遵循一些典型的Tridion实践,请考虑以下其中一项。
假设您的最终标记将有一个开放<div>
并关闭</div>
,请考虑使您的扩展包装一整套选定的富文本。在此过程中以及更新组件之前,允许作者选择“拆分”的位置并将整个更新保存到RTF。
嵌入式架构字段是拆分内容的一种更简单的方法。作者创建一组新的嵌入字段,模板代码可以将其更改为标签,段落或您的案例中可能是页面(分页?)的内容。
我理解为"Paragraph" embedded schema can handle this use case。
<!-- TemplateBeginRepeat name="Component.Fields.Paragraph" -->
<div class='Page'>
<!-- author-entered content -->
</div>
<!-- TemplateEndRepeat -->
这将创建</div><div class='Page'>
个中间嵌入字段集。它还允许您在将来更改类和标记而不进行扩展更改。
请参阅我撰写的关于custom tags in rich text fields的帖子的选项,其中包括:
class="page-split"
。您甚至可以将其设置为以某种方式显示(例如,视觉上为<hr/>
),然后将其模板化为最终标记中所需的任何内容。[[end-page]][[start-page]
”您可以使用扩展插入其中任何一个,可选择将它们设置为在CME中以某种方式显示。
我喜欢为作者提供在富文本字段中插入功能的更简单方法,但是将特定HTML(尤其是无效HTML)插入组件的问题在于将此功能硬编码到内容中。您将遇到迁移和设计更改的问题。
考虑利用Tridion如何将设计与内容分开。
答案 1 :(得分:0)
大概当你说:</div><div class='Page'>
时,你的意思是<div class='Page'></div>
。如果是这样,那么除非你可以直接控制XML整理,否则唯一剩下的方法(IMO)是确保div有一些内容。最常用的方法是插入一个不间断的空间。
<div class='Page'> </div>