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

如何通过TypoScript与Fluid获取多语言版本的内容元素?

获取TYPO3内容元素的翻译版本

问题描述

使用TypoScript获取内容元素十分简单:

lib.getSingleCE = CONTENT
lib.getSingleCE {
    table = tt_content
    select {
        uidInList.field = myUid
        pidInList = 0
    }
}

在Fluid模板中写法如下:

<f:cObject typoscriptObjectPath="lib.getSingleCE" data="{myUid: 3333}"/>

但处理翻译时完全无从下手,请问如何获取内容元素3333的外文翻译版本?

解决方案

TYPO3中内容元素的翻译通过tt_content表的l10n_parent(关联原内容UID)和sys_language_uid(标记语言ID)字段实现,调整TypoScript查询逻辑即可获取对应语言的翻译内容。

调整后的TypoScript

lib.getSingleCE = CONTENT
lib.getSingleCE {
    table = tt_content
    select {
        # 匹配当前语言下,以目标UID为父元素的翻译内容
        where = l10n_parent = ###MY_UID### AND sys_language_uid = ###SYS_LANGUAGE_UID###
        # 开启fallback,无翻译时返回原内容
        fallback = 1
        # 插入动态参数
        where.insertData = 1
        markers {
            MY_UID.field = myUid
            # 自动获取当前前端语言ID(通过URL参数L传递)
            SYS_LANGUAGE_UID.data = GP:L
        }
        # 限制仅返回一条结果
        max = 1
    }
}

Fluid模板调用

无需修改原有调用逻辑,依然可以直接传入原内容元素的UID:

<f:cObject typoscriptObjectPath="lib.getSingleCE" data="{myUid: 3333}"/>

额外配置说明

  • 若要强制获取指定语言的翻译(比如固定获取ID为1的英文版本),可将SYS_LANGUAGE_UID.data替换为固定值:
    SYS_LANGUAGE_UID.value = 1
    
  • 若不需要fallback到原内容,可将fallback = 1移除,此时无翻译时会返回空内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:05:05