我有一个使用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}
}
}
}
此代码有效,但只有主要语言的口号可编辑...
任何使口号可以用其他两种语言编辑的解决方案?
我建议使用常量的语言标识符:
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]
有三种可能性,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
上添加更多的东西才能让它发挥作用 - 我总是不确定。
现在有利有弊: