用语言条件更改typo3模板,这个怎么写?

问题描述 投票:0回答:1

我尝试创建一个typo3模板条件,它将根据语言改变html模板的特性。
我有三种语言 ID:0、2 和 3。
我用:
打字错误3 12.4.9
引导程序 14.0.7

我已经尝试过这个和类似的变体,但真的不知道我需要做什么。

<f:if condition="{siteLanguage.languageId}=={1}"> 
    <f:then>
        <div>language 1</div>
    </f:then>
    <f:if else>
        <div>language 2</div>
    </f:if else>
    <f:else>
        <div>default language</div>
    </f:else>
</f:if>

请问有人可以帮我解决这个问题吗?
谢谢

conditional-statements typo3 fluid-layout typo3-12.x
1个回答
0
投票

首先,您可以检查变量 siteLanguage 在您的 Fluid 模板中是否可用:

<f:debug>{siteLanguage}</f:debug>

将输出 siteLanguage 对象(如果可用,否则为“null”)

<f:debug>{_all}</f:debug>

将输出所有可用的变量,以便您还可以查看 siteLanguage 是否列在此处。

第二,条件应该是

<f:if condition="{siteLanguage.languageId}==1"> 

当您将变量与数字进行比较时 - 数字不能位于大括号中。

如果 Fluid 模板中没有可用的 siteLanguage 变量,则需要首先将 siteLanguage 作为变量传递到 FLUIDTEMPLATE TypoScript 设置,以便它在 Fluid 模板中可用。 以下是在 TypoScript 中执行此操作的方法:

page.10 = FLUIDTEMPLATE
page.10 {
  // ... your other FLUIDTEMPLATE settings ...

  variables {
    languageUid = TEXT
    languageUid.data = site:languageId
  }
}

然后,在 Fluid 模板中,您可以使用 languageUid 进行条件检查,如下所示:

<f:section name="Main">
  <f:if condition="{languageUid} == 0">
    <!-- Content for default language (id: 0) -->
  </f:if>
  <f:if condition="{languageUid} == 2">
    <!-- Content for second language (id: 2) -->
  </f:if>
  <f:if condition="{languageUid} == 3">
    <!-- Content for third language (id: 3) -->
  </f:if>
  
  <!-- Other content... -->
</f:section>
© www.soinside.com 2019 - 2024. All rights reserved.