Typo3流体-如何检查两个或更多ColPo是否有内容,然后打印HTML
我只想在一个或多个colPos中包含内容时打印以下HTML。如果其中没有内容元素,那么我就不想打印这个HTML块(整个“行”)Typo3流体-如何检查两个或更多ColPo是否有内容,然后打印HTML,typo3,fluid,typo3-6.2.x,flux,viewhelper,Typo3,Fluid,Typo3 6.2.x,Flux,Viewhelper,我只想在一个或多个colPos中包含内容时打印以下HTML。如果其中没有内容元素,那么我就不想打印这个HTML块(整个“行”) 我想做一个colPos,试着在液体上做一个手术。但是我不知道怎么做。我知道我可以这样一个一个地检查: <f:if condition="{f:cObject(typoscriptObjectPath: 'lib.dynamicContent', data: '5')}"> ...HTML for colPos 5 HERE... </f:if
我想做一个colPos,试着在液体上做一个手术。但是我不知道怎么做。我知道我可以这样一个一个地检查:
<f:if condition="{f:cObject(typoscriptObjectPath: 'lib.dynamicContent', data: '5')}">
...HTML for colPos 5 HERE...
</f:if>
…这里是colPos 5的HTML。。。
但我不想那样做。在我的模板中,我有将近50个不同的colPos,它们是按块(行)组织的。与colPos 1到5类似,它是一个块(行)。colPos 10至25位于另一个区块(世界其他地区)。但是有些页面不会使用colPos的某些块(行),因此没有理由为那些未使用的colPos块(行)打印HTML代码
谢谢你的帮助 仅流体解决方案是将
-ViewHelpers的结果分别分配给一个变量,然后在条件中使用这些变量的串联。示例中的v:-名称空间是扩展vhs的名称空间:
<v:variable.set name="col-5" value="{f:cObject(typoscriptObjectPath: 'lib.dynamicContent', data: '5')}"/>
<v:variable.set name="col-6" value="{f:cObject(typoscriptObjectPath: 'lib.dynamicContent', data: '6')}"/>
<v:variable.set name="col-7" value="{f:cObject(typoscriptObjectPath: 'lib.dynamicContent', data: '7')}"/>
<f:if condition="{col-5}{col-6}{col-7}">
<div class="row">
<div class="col-sm-4">{col-5}</div>
<div class="col-sm-4">{col-6}</div>
<div class="col-sm-4">{col-7}</div>
</div>
</f:if>
<f:variable name="col-5">
<f:cObject typoscriptObjectPath="lib.dynamicContent" data="5" />
</f:variable>
<f:if condition="{col-5}">
<f:format.raw>{col-5}</f:format.raw>
</f:if>
{col-5}
{col-6}
{col-7}
当然,您应该将这些内容移动到一个partial,它获取一个列数组作为参数打印。然后只需编写一次逻辑
此外,如果您确实需要25列,您应该再想一想。唯一的解决方案是将
-ViewHelpers的结果分配给每个变量,然后在条件中使用这些变量的串联。示例中的v:-名称空间是扩展vhs的名称空间:
<v:variable.set name="col-5" value="{f:cObject(typoscriptObjectPath: 'lib.dynamicContent', data: '5')}"/>
<v:variable.set name="col-6" value="{f:cObject(typoscriptObjectPath: 'lib.dynamicContent', data: '6')}"/>
<v:variable.set name="col-7" value="{f:cObject(typoscriptObjectPath: 'lib.dynamicContent', data: '7')}"/>
<f:if condition="{col-5}{col-6}{col-7}">
<div class="row">
<div class="col-sm-4">{col-5}</div>
<div class="col-sm-4">{col-6}</div>
<div class="col-sm-4">{col-7}</div>
</div>
</f:if>
<f:variable name="col-5">
<f:cObject typoscriptObjectPath="lib.dynamicContent" data="5" />
</f:variable>
<f:if condition="{col-5}">
<f:format.raw>{col-5}</f:format.raw>
</f:if>
{col-5}
{col-6}
{col-7}
当然,您应该将这些内容移动到一个partial,它获取一个列数组作为参数打印。然后只需编写一次逻辑
此外,如果您真的需要25列,您应该再想一想。由于TYPO3 8.6,这在没有扩展名“vhs”的情况下是可能的:
{col-5}
自TYPO3 8.6以来,无需扩展名“vhs”即可:
{col-5}
谢谢Jost!我没有足够的分数给你一分。一有机会,我就给你一个分数。它没有完全按照我的预期工作,但这帮助我解决了问题。if条件比较的变量不超过3个,因此我将变量合并为一个,并且我做了我需要的:)谢谢!!您应该仍然能够接受投票下方带有复选标记的答案。另外,条件
应该像我写的那样工作,因为这三个变量的内容只是串联在一起的,如果这三个变量都是空的,它就是空的。但是您使用另一个变量的方法仍然很好,这样您就可以将代码段概括为使用可变数量的列。谢谢Jost!我没有足够的分数给你一分。一有机会,我就给你一个分数。它没有完全按照我的预期工作,但这帮助我解决了问题。if条件比较的变量不超过3个,因此我将变量合并为一个,并且我做了我需要的:)谢谢!!您应该仍然能够接受投票下方带有复选标记的答案。另外,条件
应该像我写的那样工作,因为这三个变量的内容只是串联在一起的,如果这三个变量都是空的,它就是空的。但是您使用另一个变量的方法仍然很好,这样您就可以将代码段概括为使用可变数量的列。