问题描述
问题
需要根据用户第一次访问时的选择来换出徽标。 (国际的标志和北美的标志)
我想出了什么
起初认为这个问题可以使用 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):
- 像这样获取typoscript(设置)中的cookie值:
lib.requestedLocation = TEXT
lib.requestedLocation.data = global:_COOKIE|<cookie-name>
- 获得 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>