Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typo3流体-如何检查两个或更多ColPo是否有内容,然后打印HTML_Typo3_Fluid_Typo3 6.2.x_Flux_Viewhelper - Fatal编程技术网

Typo3流体-如何检查两个或更多ColPo是否有内容,然后打印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中包含内容时打印以下HTML。如果其中没有内容元素,那么我就不想打印这个HTML块(整个“行”)


我想做一个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个,因此我将变量合并为一个,并且我做了我需要的:)谢谢!!您应该仍然能够接受投票下方带有复选标记的答案。另外,
条件
应该像我写的那样工作,因为这三个变量的内容只是串联在一起的,如果这三个变量都是空的,它就是空的。但是您使用另一个变量的方法仍然很好,这样您就可以将代码段概括为使用可变数量的列。