You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 14:13:19