如何在TYPO3 9中使用aspects替换data = TSFE:sys_language_uid?

3

我们有一个typoscript配置,告诉CSS我们使用的语言,并在body标签中添加一个classnames language-x

由于似乎没有关于如何在Typoscript中实现此操作的文档记录,因此我还没有尝试过解决这个问题。

为了做到这一点,我们使用了以下typoscript:

// Language
    30 = TEXT
    30 {
        data = TSFE:sys_language_uid
        noTrimWrap = | language-||
    }

现在会触发一个E_USER_DEPRECATED错误:

Property $TSFE->sys_language_uid is not in use anymore as this information is now stored within the language aspect

事先感谢您。祝好

Thomi

3个回答

5

@josef-glatz 你建议的方法我认为也行。

对于Thomi的情况,我建议使用:

// Language
    30 = TEXT
    30 {
        data = sitelanguage:languageId
        noTrimWrap = | language-||
    }

重要提示:此功能仅适用于TYPO39.5.4及以上版本,因为Georg Ringer在2018年12月28日才修复了该问题。


4

自 TYPO3 9.5.3 版本以来,您也可以使用 TypoScript Setup 访问当前站点语言配置:

page.10 = TEXT
page.10.data = siteLanguage:navigationTitle
page.10.wrap = This is the title of the current site language: |

或者

page.10 = TEXT
page.10.dataWrap = The current site language direction is {siteLanguage:direction}

请查看https://docs.typo3.org/typo3cms/extensions/core/latest/Changelog/9.5.x/Feature-86973-TypoScriptGetTextPropertySiteLanguage.html,了解更多有关该功能的详细文档。

这真的回答了替换TSFE:sys_language_uid的问题吗? - Sybille Peters
谢谢@SybillePeters。我的示例确实不好,但它提供了一个例子,你可以像在我的回答之后建议的那样访问siteLanguage:languageId。 - Josef Glatz

2
看着文档:

https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/SiteHandling/UseSiteInTypoScript.html

https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/SiteHandling/UseSiteInConditions.html#sitehandling-inconditions

我认为你可以使用类似以下的条件语句:
[siteLanguage("typo3Language") == "it"]
  page.bodyTag = <body class="language-it">
[global]

请注意,TYPO3 9.5已经将当前语言放置在 <html> 标签中,例如:<html lang="it"> 因此,您可以在 CSS 中使用 属性选择器(得到很好的支持):
html[lang="it"]{
/*css code here*/
}

我通常会尽量减少使用条件。使用TypoScript CASE比使用条件标签更好。 - Josef Glatz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接