Typo3,如何动态改变内容

问题描述

问题

需要根据用户第一次访问时的选择来换出徽标。 (国际的标志和北美的标志)

我想出了什么

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

一些想法

如果遵循 cookie 方法,我需要一种方法来根据 cookie 换出模板/部分。有什么办法可以使用流体或打字稿来做到这一点吗?
也许 cookie 方法是处理这个问题的错误方法?也许这可以(ab-)使用语言选择或类似的东西来完成?

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

解决方法

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

用你的 javascript 设置 cookie 后,你可以设置徽标以在 TypoScript 中呈现。

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

[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>