【问题标题】:TYPO3: language dependent variable that is hard-coded in a Fluid templateTYPO3:在 Fluid 模板中硬编码的语言相关变量
【发布时间】:2017-10-03 15:35:08
【问题描述】:

我有一个使用 TYPO3 V7.6.18 构建的多语言网站。它使用的口号应该保持可编辑,但对于三种语言是不同的。这是一个在 Fluid 模板中硬编码的变量。

对于这种类型的变量,我使用一个文件 Configuration/TypoScript/constants.ts,我在其中定义了可以编辑和使用的变量 (WEB -> Template -> Constant Editor):

#---------------------------------------------------------------------
#   constants.ts
#---------------------------------------------------------------------

# customsubcategory=general=General Setup

myextension.configuration {
    general {
        # cat=myextension/general/05; type=string; label=Website Slogan.
        slogan= website slogan in main language
    }
}

[globalVar = GP:L=1]
    myextension.configuration.general.slogan = website slogan in second language
[end]

[globalVar = GP:L=2]
    myextension.configuration.general.slogan = website slogan in third language
[end]

然后我将变量绑定在Configuration/TypoScript/setup.ts中使用:

#---------------------------------------------------------------------
#   setup.ts
#---------------------------------------------------------------------

page = PAGE
page {
    # Page Main template
    10 = FLUIDTEMPLATE
    10 {
        variables {
            # slogan
            slogan = TEXT
            slogan.value = {$myextension.configuration.general.slogan}
        }
    }
}

此代码有效,但只有主要语言中的标语是可编辑的...

有什么解决方案可以让标语在其他两种语言中可编辑?

【问题讨论】:

    标签: typo3 multilingual typoscript typo3-7.6.x


    【解决方案1】:

    有三种可能性,其中两种是 Mathias 和 Riccardo 提到的。我将添加第三个,列出它们的优缺点。

    所以,第三种可能性是创建一个内容元素(最好是header 类型)并创建一个保存其uid 的TypoScript 常量。

    # cat=myextension/general/05; type=int; label=Slogan CE UID
    myextension.configuration.general.sloganUid = 
    

    然后在你的流体变量中获取这个内容元素的标题:

    page.10.variables.slogan = CONTENT
    page.10.variables.slogan {
        select.uidInList = {$myextension.configuration.general.sloganUid}
        table = tt_content
        renderObj = TEXT
        renderObj.field = header
    }
    

    创建一个 sysfolder,创建一个 header 类型的内容元素并将其 uid 放入常量中。也许您必须向 .select 添加更多内容才能使其正常工作 - 我总是不确定。

    现在的利弊:

    三个常量,正如 Mathias 所建议的:

    • 专业版:与您所做的一样,简单,代码少,无需访问文件即可进行更改
    • con:需要在常量中添加另一个常量并为每种其他语言设置

    locallang.xlf

    • 专业版:这是您期望翻译的地方(在代码中),易于添加翻译,可以转到 VCS
    • con:需要文件访问权限才能更改

    内容元素

    • 专业版:管理员可以授予编辑者访问权限(如果他们愿意),最容易添加翻译
    • con:添加数据库查询(但通常是缓存的),很容易从 BE 搞砸

    【讨论】:

    • 各位,请随意编辑和添加优缺点!
    • 感谢 undko,我需要一点时间,但 mathias 的回答很准确,我尽量让编辑保持简单,这对我来说是一个占主导地位的专业人士
    • 感谢您的建议,我是否需要比一行标题更多的信息.​​..然后我可能会采用您的 CE 解决方案!
    【解决方案2】:

    我建议对常量使用语言标识符:

    myextension.configuration {
        general {
            slogan {
              # cat=myextension/general/05; type=string; label=Website Slogan in default language.
              default = website slogan in main language
              # cat=myextension/general/06; type=string; label=Website Slogan in second language.
              second = website slogan in second language
              # cat=myextension/general/07; type=string; label=Website Slogan in third language.
              third = website slogan in third language
            }
        }
    }
    

    然后将条件移到设置中:

    page = PAGE
    page {
        # Page Main template
        10 = FLUIDTEMPLATE
        10 {
            variables {
                # slogan
                slogan = TEXT
                slogan.value = {$myextension.configuration.general.slogan.default}
            }
        }
    }
    
    [globalVar = GP:L=1]
        page.10.variables.slogan.value = {$myextension.configuration.general.slogan.second}
    [end]
    
    [globalVar = GP:L=2]
        page.10.variables.slogan.value = {$myextension.configuration.general.slogan.third}
    [end]
    

    【讨论】:

    • ciao mathias !!您能否添加设置代码...然后您的答案被接受!
    • 我会在 locallang.xlf 文件中使用标签; IMO 它可以得到更好的维护
    • Ciao Riccardo !!我不会授予对 xlf 文件的编辑器的访问权限!此外,它的技术建议方式,我现在正在测试 mathias 的建议......这就是编辑应该期待这样的设置的地方
    猜你喜欢
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 2017-04-16
    • 2021-03-13
    • 1970-01-01
    相关资源
    最近更新 更多