0

在带有 ext:mask 的 TYPO3 7 LTS 中,我想将一个值从我的页面模板传递到通过掩码扩展呈现的 FLUIDTEMPLATE。

我正在努力实现的一个例子:

内容元素具有描述汽车的内容:沃尔沃、四轮驱动...

在页面模板中,我想用不同的颜色显示那个“汽车”。所以页面模板将能够命令:“获得第一辆车,并以绿色显示。然后第二辆车,以黄色显示”。(不,它与 css 无关..)

如果必须在整个页面上完成一次,我可以使用

`tt_content.default.mask_car.settings.color = green`

或者(作为记录)如果该变量的目的是修改演示文稿,我可以使用:

`tt_content.default.mask_car.settings.file = path/to/Mask/Content/Templates/car_green.html`

但是如果页面上有多个相同内容元素的实例,那么这种方法就不好了。

如何将不同的值传递给页面上同一 CE 的不同实例?

4

3 回答 3

4

您可以添加以下 TypoScript:

lib.set_register = LOAD_REGISTER
lib.set_register.color = TEXT
lib.set_register.color.current = 1

lib.get_register.color = TEXT
lib.get_register.color.data = register:color

lib.mask_car < styles.content.get
lib.mask_car.select.where = colPos=123

在您的页面模板中,您可以使用 Fluid 设置颜色

<f:cObject typoscriptObjectPath="lib.set_register.color" data="green"/>

使用 Fluid 获取您的内容元素

<f:cObject typoscriptObjectPath="lib.mask_car"/>

并使用 Fluid 在您的蒙版模板中切换内容元素的输出

<f:if condition="{f:cObject(typoscriptObjectPath: 'lib.get_register.color')} == 'green'">
    <f:then>
        green
    </f:then>
    <f:else>
        not green
    </f:else>
</f:if>

我希望这可以帮助您解决问题。

于 2017-03-10T23:53:38.240 回答
2

我有一个类似的问题:掩码内容元素的集合;同一页面上同一元素的两种不同渲染:

  • 一个随机的 mask-ce 呈现为预告片,链接到页面底部的详细信息

  • 呈现为列表项的所有掩码 ce 的列表(详细)

    我的解决方案:

渲染随机预告片:

lib.qa_random_teaser_community < styles.content.get
lib.qa_random_teaser_community.select{
  where = colPos=12
  pidInList = {$pidCommunityQAStorage}
  max = 1
  orderBy = rand()
}

详细列表的渲染:

lib.qa_list_community < styles.content.get
lib.qa_list_community{
  renderObj < tt_content
  renderObj.default.mask_qa_community.settings.renderListItems = 1
  select {
    where = colPos=12
    pidInList = {$pidCommunityQAStorage}
  }
}

我将 tt_content 复制到 renderObj,然后我可以修改它,为这个内容渲染添加一个专门的 mask 元素设置:

renderObj.default.mask_qa_community.settings.renderListItems = 1

在遮罩模板中,我只需要检查设置并触发适当的渲染:

<f:if condition="{settings.renderListItems}">
  <f:then>
    <f:render section="qa-detail" arguments="{data:data}"/>
  </f:then>
  <f:else>
    <f:render section="qa-teaser" arguments="{data:data}"/>
  </f:else>
</f:if>

另一种方法是选择一个专用的流体模板,而不是仅仅提供一个设置:

renderObj.default.mask_qa_community.settings.file = .......

在带有 TYPO3 8 的掩码 3.0.1 中...

renderObj.mask_qa_community.settings.file = .......

希望它对其他人有用。

于 2017-04-28T21:02:47.990 回答
0

我正在使用掩码 4.x 在 TYPO3 9 中重新审视这个问题,这有效:

lib.my_content_element {
  renderObj.mask_content_text.settings.test = 123
}
于 2019-05-26T19:44:32.507 回答