TYPO3 Fluid:如何判断链接目标页面是否处于启用状态?
TYPO3 Fluid 链接目标页面禁用时的条件判断修复
问题场景
现有Fluid代码如下:
<f:if condition="{data.header_link.url}"> <f:then> <f:link.typolink parameter="{data.header_link}">My Link</f:link.typolink> </f:then> <f:else> Sorry, no link </f:else> </f:if>
当设置了链接但目标页面被禁用时,{data.header_link.url}仍存在,导致条件判断为true,最终输出无链接的文本“My Link”,不符合预期。
解决方案(TYPO3 13.4.15)
可以通过f:page.isValid视图助手检查目标页面的有效性,结合链接是否存在的判断,确保仅在页面可用时才渲染链接:
<f:if condition="{data.header_link.pageUid} && {f:page.isValid(pageUid: data.header_link.pageUid)}"> <f:then> <f:link.typolink parameter="{data.header_link}">My Link</f:link.typolink> </f:then> <f:else> Sorry, no link </f:else> </f:if>
说明
{data.header_link.pageUid}:获取链接对应的页面ID(仅当链接类型为页面时有效)f:page.isValid:自动过滤已删除、隐藏、过期或未发布的页面,确保仅检查有效页面
如果需要兼容外部链接、文件链接等多种类型,可扩展条件判断:
<f:if condition="{data.header_link}"> <f:then> <f:variable name="isValidLink"> <f:if condition="{data.header_link.type} == 'page'"> <f:then>{f:page.isValid(pageUid: data.header_link.pageUid)}</f:then> <f:else>1</f:else> <!-- 非页面链接默认视为有效,可按需调整 --> </f:if> </f:variable> <f:if condition="{isValidLink}"> <f:then><f:link.typolink parameter="{data.header_link}">My Link</f:link.typolink></f:then> <f:else>Sorry, no link</f:else> </f:if> </f:then> <f:else> Sorry, no link </f:else> </f:if>
内容的提问来源于stack exchange,提问作者t3fan
相关产品推荐
相关产品推荐

