在Tridion中实现脚注

时间:2012-10-25 16:19:54

标签: tridion

我想知道是否有人想出了一个很好的脚注解决方案。 我想在一个包含多个组件的页面上在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个脚注信息


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

谢谢

3 个答案:

答案 0 :(得分: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,这种方法可能效果不好,因为你可以独立发布它们。

答案 1 :(得分:3)

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

如果你想在Tridion中这样做,我建议你的页面模板可能首先正常渲染组件表示,然后使用“脚注”组件模板再次渲染相关组件。最难的部分是使数字正确,但是你可以通过确保每个组件按照它们在页面中的顺序处理它们,然后使用上下文变量管理计数器来实现。

标准上下文变量技术在这种情况下不起作用,因为您依赖于一个组件渲染能够“通知”下一个组件的位置。 (当然,重复脚注的全部内容)。我写过a simple illustration of a technique to get round this over at Tridion Practice。这应该指明方向,但我想你的实现需要相当复杂。

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

答案 2 :(得分: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 />

FootNote控件会为自己指定一个自动增量编号并渲染为

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

或者您希望作为脚注链接的演示形式。

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

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

或类似的演示形式。

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