6

我想知道是否有人想出了一个很好的脚注解决方案。我希望在具有多个组件的页面上在 Tridion 中实现脚注,并且我希望所有脚注都显示在页面底部,并带有在内容部分中生成的正确脚注编号。

http://i.stack.imgur.com/dAxeh.png

在内容中

"orem ipsum dolor sit amet, consectetur* 1 * adipiscing elit. Vivamus blandit, ligula pharetra laoreet porta, nibh augue* 2 * fringilla tellus, et aliquet quam lacus mattis risus. Praesent rutrum, leo eu ornare sagittis,tellus ante blandit arcu。 "

页面结束

1 脚注信息


例如,用户将创建带有内容的组件,并且该组件将具有指向脚注组件的组件链接,并且在发布时它应该收集所有脚注并呈现。它应该与放置在内容本身中的数字相匹配。

谢谢

4

3 回答 3

4

一种选择是使用支持锚tridion:anchor链接的链接,锚链接也是 Tridion RTF 提供的 OOTB。

围绕锚链接的文档:

http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL_Tridion_2011_SPONE/task_INSHYP2DDAFF2CF95E4430AA0F27AD7A91B5F8

http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL_Tridion_2011_SPONE/idheading-359728360

其他选项,可能是编写一个自定义 TBB,它在页面末尾处理并生成锚标记。如果您有动态 CT,则此方法可能效果不佳,因为您可以独立发布它们。

于 2012-10-25T18:44:05.387 回答
3

如果您能够依赖可用的 JavaScript,那可能是解决此问题的最直接方法。您可以简单地在隐藏元素中“在线”发布脚注,并在浏览器中编写所需的输出。

如果您想在 Tridion 中执行此操作,我建议您的页面模板可以先正常呈现组件演示文稿,然后使用“脚注”组件模板再次呈现相关组件。最难的部分是使数字正确,但您可以通过确保每次运行组件按照它们在页面中的顺序处理它们,然后使用上下文变量管理计数器来做到这一点。

标准的上下文变量技术在这种情况下不起作用,因为您依赖一个组件渲染能够“通知”下一个组件的位置。(当然,在脚注中重复整件事)。我在 Tridion Practice 上写了一个简单的技术说明来解决这个问题。这应该指明了方向,但我想您的实现将需要更加复杂。

编辑:我的回答假设您的脚注数据与其所指的文本位于同一组件中,但是在重新阅读您的问题时,我发现您有单独的组件。仍然 - 一些技术可能仍然适用。

于 2012-10-25T21:58:13.797 回答
2

根据您的实现模型(静态/动态/混合),您还可以选择在渲染时使用自定义控件生成这些:

Lorem ipsum dolor sit amet, consectetur<dominic:FootNote>Footnote text goes here</dominic:FootNote> adipiscing elit. 
Vivamus blandit, ligula pharetra laoreet porta, nibh augue<dominic:FootNote>Footnote text goes here</dominic:FootNote> fringilla tellus, 
et aliquet quam lacus mattis risus. Praesent rutrum, leo eu ornare sagittis, tellus ante blandit arcu.

您将使用 FootnoteContainer 的页尾:

<dominic:FootNoteContainer />

脚注控件将为自己分配一个自动增量编号并呈现为

<sup><a href="#footnotes">number</a></sup>

或任何您喜欢的脚注链接的呈现形式。

然后容器会找到页面上的所有脚注控件,并在列表中写出每个脚注的内部文本:

<ul>
  <li>number 1 footnote info</li>
  <li>...</li>
</ul>

或类似的演示文稿表格。

这种方法的优点是它不依赖于静态的组件表示,它会大大简化您的模板化解决方案。缺点显然是你牺牲了一些请求性能......

于 2012-10-26T13:20:25.233 回答