【问题标题】:Tridion - Insert HTML (literal and partial elements) in a RTFTridion - 在 RTF 中插入 HTML(文字和部分元素)
【发布时间】:2012-12-16 15:36:05
【问题描述】:

我正在尝试在 Tridion 中创建一个 GUI 扩展,在单击按钮时我将特定的 html 插入到 RTF 中......我有工具栏按钮和弹出窗口来通知用户。但是,当我在插入 HTML“

”时在弹出窗口上单击“确定”时,它会插入“
”。

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

【问题讨论】:

  • 我不确定这个功能是什么,但我想绕过 HTML 整理功能是不可能的,因为内容必须是格式良好的 XHTML。如果你能解释你想要达到的目标,也许可以找到更合适的解决方案。

标签: html tridion rtf


【解决方案1】:

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

</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 -->

这将在嵌入字段集之间创建&lt;/div&gt;&lt;div class='Page'&gt;。它还允许您在将来更改类和标签而无需更改扩展名。

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

查看我写的关于 custom tags in rich text fields 的帖子中的选项,其中包括:

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

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

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

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

【讨论】:

  • 嘿,Alvin,谢谢大家...您为我们节省了大量的研究和工作...您说得对,我们正在尝试完成分页。我就是这样做的......我在 applyHTML 中使用了占位符标签 [PaginateHere]。然后做了一个getSource()。在返回的文本中,我用无效的 HTML 替换了标签。然后做了一个 setSource()。再次感谢!
  • 很高兴听到。我喜欢你的“PaginateHere”选项(让我想起了 Blogger 的more 功能)。替代方案是嵌入式模式字段——主要是因为它现在是“页面”,但接下来可能是选项卡、可滑动区域或其他一些导航方法。作者会按开箱即用的“+”按钮来分隔内容。无论哪种方式,您也可以将占位符保留在 RTF 中并使用模板进行更改。
【解决方案2】:

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

<div class='Page'>&#160;</div>

【讨论】:

    猜你喜欢
    • 2012-09-22
    • 1970-01-01
    • 2011-06-16
    • 2017-07-05
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 2012-04-14
    • 2011-12-30
    相关资源
    最近更新 更多