Typo3,如何动态改变内容

Typo3, how to dynamically change content

问题

有一项要求,根据用户在首次访问时做出的选择换掉徽标。 (国际标志和北美标志)

我想到了什么

起初认为这个问题可以使用 cookie 来解决。我实施了一些 javascript,以在需要时检查和设置 cookie。到目前为止这工作正常,但使用 javascript 更改为徽标不是可行的方法,现在我正在寻找可能的解决方案。

一些想法

如果遵循 cookie 方法,我需要一种基于 cookie 换出 template/partials 的方法。有没有什么办法可以使用流畅或打字来做到这一点?
也许 cookie 方法是处理这个问题的错误方法?也许这可以(滥用)使用语言选择或类似的东西来完成?

感谢任何帮助或想法。
谢谢!

首先:请使用更准确描述问题的问题标题。

使用 javascript 设置 cookie 后,您可以将徽标设置为在 TypoScript 中呈现。

有条件(https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/Conditions/Index.html#request-getcookieparams)可以读取cookie参数,根据cookie设置logo。

[request.getCookieParams()['logo'] == 'us']
lib.logoFile = pathToYourLogos/us.svg
[else]
lib.logoFile = pathToYourLogos/international.svg
[end]

感谢@thomas-löffler 和@jonas-eberle 指出了正确的方向。 Thomass 解决方案适用于 Typo3 >= 9。此解决方案对我在 Typo3 版本上有效。 8.7(另见 this solution):

  1. 像这样在 typoscript(设置)中获取 cookie 值:
lib.requestedLocation = TEXT
lib.requestedLocation.data = global:_COOKIE|<cookie-name>
  1. 获取 cookie 值后,我们可以像这样将其用于流体:
   <f:variable name="location" value="{f:cObject(typoscriptObjectPath: 'lib.requestedLocation')}" />
   <f:if condition="{location} == 'america'">
      <f:then>
         <img class="logo" src="/path-to-us-logo.svg">
      </f:then>
      <!-- defaulting to international if cookie is not set or somehting else is wrong -->
      <f:else>
         <img class="logo" src="/path-to-international-logo.svg">
      </f:else>
   </f:if>