如何优雅地修改 html 以在服务器端第 x 段后注入 html 元素?

How to elegantly modify html to inject html element after x-th paragraph on the server side?

我需要修改来自外部文件(服务器端)的 html,然后再渲染它并注入引号 'component',如下所示:

此组件需要在第 2 段之后注入,我打算使用 htmlagillity pack。有什么例子吗?一旦我发现第三段应该是微不足道的,HtmlNode.InsertAfter() 方法是不错的选择吗?

另一个问题是是否可以注入 sitecore 占位符甚至用户控件来呈现我的报价而不是纯 html?我觉得应该是,但不确定什么是好的方法。 谢谢

我可以在这里建议两种可能的方法:

1) 使用带有一些自定义的片段。片段允许用户将 HTML 的 pre-defined 块插入到 RTE 字段中。你可以有一个 pre-defined 的 HTML 片段,它可能有一些标识符来指示它应该使用自定义处理(我会建议一些 data-xxx 样式属性,它不会与任何 CSS 或 JavaScript)。然后你可以创建一个新的 renderField 管道处理器,它将检测富文本字段内容中的 data-xxx 属性 - 你可以为此使用 HtmlAgilityPack 然后用你的 server-side 文件.

-或-

2) 将您的文本内容拆分为两个单独的块,并在占位符内呈现两个 "HtmlText" 实例,并在同一占位符中呈现它们之间的引用文本。

我建议在第二段之后插入文本的规则会很 'brittle' 因为这将非常依赖内容编辑器以相当精确的方式设置富文本字段内容,例如始终确保两个或更多段落并始终用段落分隔文本 - 他们可能会决定使用大量换行符来拆分文本。也就是说,如果您这样做,您将创建一个新的 renderField 管道处理器。