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

如何让TYPO3的HMENU(special=language)仅显示可用页面?

解决TYPO3语言HMENU出现404无效链接的问题

核心问题分析

你的代码里手动指定了additionalParams的语言参数,且固定使用当前页面UID生成链接,没有检查当前页面是否存在对应语言的翻译版本,导致无翻译页面时,链接指向当前页面加语言参数,最终触发404。同时没有利用HMENU special=language的自动处理逻辑——它本来可以自动获取对应语言的页面UID,并过滤无翻译的菜单项。

调整方案

1. 自动过滤无翻译的语言项

在HMENU的special配置中添加hideIfNoTranslation = 1,让TYPO3自动隐藏当前页面没有对应语言翻译的菜单项。

2. 修正链接生成逻辑

移除手动设置的additionalParams,改用HMENU提供的对应语言页面UID(itemData:uid)生成链接,同时去掉doNotLinkIt=1,让TMENU自动生成正确的语言切换链接。

修改后的完整TypoScript代码

20 = HMENU
20 {
    special = language
    special.value = 0,1,2,3,4,5,6
    special.normalWhenNoLanguage = 0
    # 自动隐藏无对应语言翻译的菜单项
    special.hideIfNoTranslation = 1

    1 = TMENU
    1 {
        wrap (
                    <div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
                        |
                    </div>
                </div>
            </div>
        )

        NO = 1
        NO {
            # 移除手动禁用链接的设置,让TMENU自动生成链接
            # doNotLinkIt = 1
            # linkWrap = |
            stdWrap {
                typolink {
                    # 使用HMENU提供的对应语言页面UID,而非当前页面UID
                    parameter.data = itemData:uid
                    ATagParams = class="dropdown-item"
                    
                    addQueryString = 1
                    addQueryString.exclude = L,id,no_cache
                    addQueryString.method = GET
                    no_cache = 0
                }
            }
        }

        ACT < .NO
        ACT {
            stdWrap {
                typolink {
                    ATagParams = class="disable-link-content"
                }
            }
        }

        USERDEF1 < .NO
        USERDEF1 {
            noLink = 1
        }

        USERDEF2 < .ACT
        USERDEF2 {
            noLink = 1
        }
    }
}

额外说明

  • 如果需要保留无翻译语言的菜单项但不生成链接,可以给USERDEF1添加条件判断:当itemData:uid为空时触发该状态,实现无翻译项仅显示文本不跳转。

内容的提问来源于stack exchange,提问作者Rustyjim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:58:04