Typo3 在主模板中将分部的输出用作变量
毫无疑问: 我使用分部渲染不可缓存的内容(在本例中为随机图像)。 我在主模板中使用以下代码执行此操作:Typo3 在主模板中将分部的输出用作变量,typo3,fluid,typo3-7.6.x,Typo3,Fluid,Typo3 7.6.x,毫无疑问: 我使用分部渲染不可缓存的内容(在本例中为随机图像)。 我在主模板中使用以下代码执行此操作: {v:render.uncache(partial: 'Random-Image', arguments: {iterator: images})} 直接在模板中输出正确的内容(图像的url,例如fileadmin/upload/abc.jpg)。但是如果我想用它作为中src的变量,我想你把两件事弄混了,所以我想把你的问题分开: 1)是否可以将部分的输出用作变量? 是的,就像你想要的那样。
{v:render.uncache(partial: 'Random-Image', arguments: {iterator: images})}
直接在模板中输出正确的内容(图像的url,例如
fileadmin/upload/abc.jpg
)。但是如果我想用它作为中src的变量,我想你把两件事弄混了,所以我想把你的问题分开:
1)是否可以将部分的输出用作变量?
是的,就像你想要的那样。实际上是你干的
但让我们看一个测试:
有一个部分:测试/消息
内容为:“这是一次测试”
然后在主模板中,您可以使用如下内容:
<div class="test">
<f:if condition="{f:render(partial:'Test/Message')}
== 'It is a test'">
<f:then>Passed</f:then>
<f:else>Failed</f:else>
</f:if>
</div>
通过
失败
在这种情况下,您将看到“已通过”,如果您将部分更改为“It should failed”,那么您将得到“failed”呈现
2)为什么会看到
?
这是一个未缓存的内容,因此类似于COA_INT
或USR_INT
中的对象
您可以在typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
中找到一个函数,它的名称是INTincScript\u进程
。它负责在代码中找到这样的行,并用未缓存的内容替换它们
这意味着,如果渲染模板,则分部只渲染对未缓存对象的引用,而不渲染内容本身
最后,为了提出原始问题的解决方案,请尝试在局部中渲染整个图像,而不仅仅是渲染路径。因此,在使用v:iterate.random ViewHelper的部分中包含。然后v:render.uncache应该将整个图像块标记为不可缓存。Ah。。也许我的问题有点错了。对于您的2)部分:是否可以使用此变量({v:render.uncache
的输出)作为变量?我想要的是只选择一个随机迭代器项,并在主模板(缓存)中使用它您还可以看看我的原始问题吗?也许有一种更好的方法可以在没有分部的情况下实现我想要的功能:我认为,您无法实现这一点。您不能将分部的结果作为字符串或变量返回到v:render.uncache,因为ViewHelper生成不可缓存的内容,并且只提供指向的指针它。我认为你应该在部分中使用你问题的一部分,所以试着用它来传递整个图像,而不仅仅是路径,忽略INT_脚本,这只是为了不缓存内容。我理解,谢谢,非常有趣。对于你的第二个评论,是的,这就是我现在做的,我在部分中使用f:图像。我的目标是至于创建一个通用部分,我也可以用于其他迭代器。我不喜欢这样一个事实,我需要一个单独的文件来完成这个小任务
<f:debug>
{v:render.uncache(partial: 'Random-Image', arguments: {iterator: images})}
</f:debug>
<div class="test">
<f:if condition="{f:render(partial:'Test/Message')}
== 'It is a test'">
<f:then>Passed</f:then>
<f:else>Failed</f:else>
</f:if>
</div>