TYPO3:在 Fluid 模板中硬编码的语言相关变量
Posted
技术标签:
【中文标题】TYPO3:在 Fluid 模板中硬编码的语言相关变量【英文标题】:TYPO3: language dependent variable that is hard-coded in a Fluid template 【发布时间】: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
此代码有效,但只有主要语言中的标语是可编辑的...
有什么解决方案可以让标语在其他两种语言中可编辑?
【问题讨论】:
【参考方案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 的建议......这就是编辑应该期待这样的设置的地方以上是关于TYPO3:在 Fluid 模板中硬编码的语言相关变量的主要内容,如果未能解决你的问题,请参考以下文章
Fluid Powered TYPO3 FLUX Fluidcontent - 前端没有输出?