声明内容元素uid在流体模板中使用它们的最佳方法

时间:2015-03-06 14:51:14

标签: typo3 fluid typo3-6.2.x

我想在每个页面上使用流体模板显示一些contentlement。我的解决方案是创建一个typoscript元素,如:

lib.my.myelement= CONTENT
lib.my.myelement {
  table = tt_content
  select {
    pidInList = 15
    where = uid=99
  }
}

然后在流体模板中使用它:

<f:cObject typoscriptObjectPath="lib.my.myelement" />

另一种方法是使用v:content.render或v:content.get直接在流体中创建它们。在这个例子中,我在一个页面上获取所有内容元素并将它们保存在一个数组中:

<v:variable.set name="contentElements" value="{v:content.get(column:'0', limit:'3', pageUid:'9',  render:'FALSE')}" />

我不能使用第一个解决方案,因为在这个页面上会有很多不同的语言(我可以使用它,但每次添加一个新语言时我都会努力声明typoscript中新元素的所有新uid )。

第二种解决方案可以更好地工作,因为当您翻译元素uid更改页面时,pageUid不会更改。但在这里,我遇到的问题是我不仅需要所有元素,还必须识别每个元素。

以下是我使用第二种解决方案的方法:

<v:variable.set name="contentElements" value="{v:content.get(column:'0', limit:'3', pageUid:'9',  render:'FALSE')}" />

  <f:for each="{contentElements}" as="contentElement" iteration="footerIteration">
    <div class="column{v:math.sum(a: footerIteration.index, b: 1)}">
        <v:content.render contentUids="{0:contentElement.uid}" />
    </div>
  </f:for>

如您所见,我以相同的方式使用每个元素。


让我们创建一个简单的案例:

我有一个pageUid = 10的页面(此页面将有翻译)。在每个翻译将是3个元素。假设1个元素得到了“id”(带有id我的意思是我可以识别这个元素的方式)title1而其他两个元素的ID为list1list2

现在我的问题是我如何访问例如list1?

我希望它可以理解,如果不清楚请发表评论。


编辑:我可以在元素的每次翻译中使用相同的顺序,然后检查for循环中的迭代(请参阅第二个解决方案)以识别它们。但我想知道是否有更好,更清洁的方式。

0 个答案:

没有答案