在带有ext:mask的TYPO3 7 LTS中,我想将页面模板中的值传递给通过掩码扩展渲染的FLUIDTEMPLATE。
我正在努力实现的一个例子:
内容元素包含描述汽车的内容:沃尔沃,4WD ......
在页面模板中,我想以不同的方式显示“car” 颜色。因此页面模板将能够命令:“获得第一个 汽车,并以绿色显示。然后第二辆车用黄色显示“。 (不,它与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的不同实例中?
答案 0 :(得分: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>
我希望这可以帮助您解决问题。
答案 1 :(得分:2)
我遇到了类似的问题: 掩码内容元素的集合;同一页面上同一元素的两个不同渲染:
呈现为列表项(详细信息)
的所有掩码的列表我的解决方案:
随机预告片的渲染:
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 = .......
希望它对其他人有用。
答案 2 :(得分:0)
我正在使用面具4.x在TYPO3 9中重新讨论这个问题,
export class HomeComponent implements OnInit {
lat: number;
long: number;
restaurants: ApiData[];
rest: any;
show: boolean = false;
x = document.getElementById("restaurant");
constructor(private api: Api) {}
ngOnInit() {}
getLocation = () => {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(this.showPosition);
} else {
this.x.innerHTML = "Geolocation is not supported by this browser.";
}
}
showPosition = (position) => {
this.lat = position.coords.latitude;
this.long = position.coords.longitude;
}
random = (length) => {
return Math.floor(Math.random() * length)
}
displayRest = () => {
this.rest = this.restaurants[this.random(this.restaurants.length)];
console.log('restaurant obtained');
}
filterRestaurants = () => {
console.log('clicked');
this.api.getRestaurants(this.lat, this.long).subscribe((data) => {
this.restaurants = data.results;
this.show = true;
this.displayRest();
}, error => {
console.log(error.message)
});
console.log(this.rest);
}
}