1

我使用 Typo3 1.4.10,使用 Bootstrap 包

我尝试根据当前使用的前端语言更改 Typo3 流体模板。我尝试了各种“如果条件”。我就是想不通。我尝试过使用 siteLanguage、语言和 sys_language_uid。在 TSsetup siteLanguage 为我工作,如下所示:

[siteLanguage("locale") == "en_US.UTF-8"]
 ...

[global]

我不知道如何在流体模板中做类似的事情。我尝试了很多不同的方法。如何更正以下从我的许多尝试之一中获取的示例?

<f:if condition="{siteLanguage} == {siteLanguage.locale}">
<f:if condition="{siteLanguage.locale} == en">
 <f:then>
    language 1
</f:then>
<f:else>
    language 0
</f:else>
</f:if> </f:if>
4

3 回答 3

1

有两种方法,我也在我的最新项目中使用过。我希望这对您和其他人也有帮助。

1. 为 PAGE 的流体模板定义一个简单的字符串变量

这是您的 TypoScript 设置的代码。

// Setting a default value
page.10.variables.currentLanguage = TEXT
page.10.variables.currentLanguage.value = default

// Change value to English
[siteLanguage("locale") == "en_US.UTF-8"]
page.10.variables.currentLanguage.value = english
[global]

// Change value to German
[siteLanguage("locale") == "de_DE.UTF-8"]
page.10.variables.currentLanguage.value = deutsch
[global]

2. 为流体模板设置定义一个(或多个)值

这是您的 TypoScript 设置的代码。

// Setting a default value
page.10.settings.currentLanguage = default

// English
[siteLanguage("locale") == "en_US.UTF-8"]
page.10.settings.currentLanguage = english
[global]

// German
[siteLanguage("locale") == "de_DE.UTF-8"]
page.10.settings.currentLanguage = deutsch
[global]

根据您的语言值切换 Fluid 模板

在您的流体模板中,您应该使用如下 switch 语句:

<f:switch expression="{currentLanguage}">
    <f:case value="english">
        <!-- English content -->
    </f:case>
    <f:case value="deutsch">
       <!-- German content -->
    </f:case>
    <f:defaultCase>
       <!-- Default content -->
    </f:case>
</f:switch>

<!-- When using the settings, you need to use: -->
<f:switch expression="{settings.currentLanguage}">
...

进一步的问题?随意问!

于 2020-11-29T14:34:07.597 回答
1

您可以使用 vhs viewhelper

  <html data-namespace-typo3-fluid="true"
          xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
          xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers">


<f:if condition="{v:page.language()}==0">
  <f:then>
      language 0
  </f:then>
  <f:else>
      other language
  </f:else>
</f:if>
</html>

因此,您必须先安装扩展vhs

于 2020-11-28T19:54:06.010 回答
0

如果它在 TypoScript 设置中对您有用,您应该使用它来切换模板文件或提供包含语言信息的变量。

在 Fluid 模板本身中执行此操作会增加处理负载,尤其是当您尝试使用 ViewHelper 解决它时。

恕我直言,建议使用 TypoScript 切换模板和/或布局,因为您仍然可以使用相同的部分以避免冗余代码,但只需检查一次条件。

于 2020-11-29T09:30:27.890 回答