首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将fluid页面模板中的值传递到ext:mask内容元素模板中?

如何将fluid页面模板中的值传递到ext:mask内容元素模板中?
EN

Stack Overflow用户
提问于 2017-03-11 05:37:21
回答 3查看 1.5K关注 0票数 0

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

下面是我想要实现的一个例子:

内容元素包含描述汽车的内容:一辆沃尔沃,一辆四轮驱动...

在页面模板中,我想用不同的颜色显示“汽车”。因此,页面模板将能够命令:“获取第一辆汽车,并将其显示为绿色。然后,第二辆汽车,将其显示为黄色”。(不,它与css没有任何关系。)

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

代码语言:javascript
复制
`tt_content.default.mask_car.settings.color = green`

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

代码语言:javascript
复制
`tt_content.default.mask_car.settings.file = path/to/Mask/Content/Templates/car_green.html`

但是如果页面上有同一个content元素的多个实例,那么这种方法就不好用。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-11 07:53:38

您可以添加以下TypoScript:

代码语言:javascript
复制
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设置颜色

代码语言:javascript
复制
<f:cObject typoscriptObjectPath="lib.set_register.color" data="green"/>

使用Fluid获取内容元素

代码语言:javascript
复制
<f:cObject typoscriptObjectPath="lib.mask_car"/>

并使用Fluid在掩码模板中切换内容元素的输出

代码语言:javascript
复制
<f:if condition="{f:cObject(typoscriptObjectPath: 'lib.get_register.color')} == 'green'">
    <f:then>
        green
    </f:then>
    <f:else>
        not green
    </f:else>
</f:if>

我希望这能帮助你解决你的问题。

票数 4
EN

Stack Overflow用户

发布于 2017-04-29 05:02:48

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

  • 一个随机的掩码-ce呈现为预告片,链接到页面底部的细节

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

我的解决方案:

渲染随机引导器:

代码语言:javascript
复制
lib.qa_random_teaser_community < styles.content.get
lib.qa_random_teaser_community.select{
  where = colPos=12
  pidInList = {$pidCommunityQAStorage}
  max = 1
  orderBy = rand()
}

详细信息列表的呈现:

代码语言:javascript
复制
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}
  }
}

我将掩码复制到renderObj,然后我可以修改它,为tt_content元素添加一个专门用于此内容呈现的设置:

代码语言:javascript
复制
renderObj.default.mask_qa_community.settings.renderListItems = 1

在掩码模板中,我只需检查设置并触发相应的渲染:

代码语言:javascript
复制
<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>

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

代码语言:javascript
复制
renderObj.default.mask_qa_community.settings.file = .......

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

代码语言:javascript
复制
renderObj.mask_qa_community.settings.file = .......

希望对其他人有用。

票数 2
EN

Stack Overflow用户

发布于 2019-05-27 03:44:33

在TYPO3 9掩码为4.x的情况下,我重新考虑了这个问题,这是可行的:

代码语言:javascript
复制
lib.my_content_element {
  renderObj.mask_content_text.settings.test = 123
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42728116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档