Content management system 类型3:本地化条件,流体模板中的系统语言uid
我想实现的是,图像的变化取决于当时选择的语言 这是我的HTMLContent management system 类型3:本地化条件,流体模板中的系统语言uid,content-management-system,typo3,fluid,typo3-7.6.x,Content Management System,Typo3,Fluid,Typo3 7.6.x,我想实现的是,图像的变化取决于当时选择的语言 这是我的HTML <f:if condition="{TSFE:sys_language_uid} == 1"> <f:then> <f:link.page pageUid="{settings.rootpid}" class="navbar-brand"> <img src="fileadmin/branding/brand/images/png/image1.png" alt
<f:if condition="{TSFE:sys_language_uid} == 1">
<f:then>
<f:link.page pageUid="{settings.rootpid}" class="navbar-brand">
<img src="fileadmin/branding/brand/images/png/image1.png" alt="Logo {settings.brandname}" />
</f:link.page>
</f:then>
<f:else>
<f:link.page pageUid="{settings.rootpid}" class="navbar-brand">
<img src="fileadmin/branding/brand/images/png/image2.png" alt="Logo {settings.brandname}" />
</f:link.page>
</f:else>
</f:if>
我尝试了很多不同的方法来写这篇文章,但似乎没有成功,希望有人能帮上忙。将预先计算的布尔值传递给模板。从控制器(您可以访问TSFE)或通过TS访问
FLUIDTEMPLATE
对象。你从哪里来的问题不清楚。您应该将条件内联移动到src
,这样您就不会复制整个标记,而是只切换值
或者,您可以在控制器或TS中预先计算
src
值,然后将其传递给视图。我假设您使用的是您自己的发行版,或者扩展了某些软件包的功能
在您的constants.ts中尝试此操作(以便在BE constant editor中可用)myext/Configuration/TypoScript/constants.ts
:
myext.configuration {
logo {
src {
# cat=myext/general/05; type=string; label=English Logo
default = fileadmin/branding/brand/images/png/image0.png
# cat=myext/general/06; type=string; label=Dutch Logo
nl = fileadmin/branding/brand/images/png/image1.png
# cat=myext/general/07; type=string; label=French Logo
fr = fileadmin/branding/brand/images/png/image2.png
}
}
}
page = PAGE
page {
# Page Main template
10 = FLUIDTEMPLATE
10 {
variables {
# Logo
logoSrc = TEXT
logoSrc.value = {$myext.configuration.logo.src.default}
}
}
}
[globalVar = GP:L=1]
page.10.variables.logoSrc.value = {$myext.configuration.logo.src.nl}
[end]
[globalVar = GP:L=2]
page.10.variables.logoSrc.value = {$myext.configuration.logo.src.fr}
[end]
然后在setup.tsmyext/Configuration/TypoScript/setup.ts
:
myext.configuration {
logo {
src {
# cat=myext/general/05; type=string; label=English Logo
default = fileadmin/branding/brand/images/png/image0.png
# cat=myext/general/06; type=string; label=Dutch Logo
nl = fileadmin/branding/brand/images/png/image1.png
# cat=myext/general/07; type=string; label=French Logo
fr = fileadmin/branding/brand/images/png/image2.png
}
}
}
page = PAGE
page {
# Page Main template
10 = FLUIDTEMPLATE
10 {
variables {
# Logo
logoSrc = TEXT
logoSrc.value = {$myext.configuration.logo.src.default}
}
}
}
[globalVar = GP:L=1]
page.10.variables.logoSrc.value = {$myext.configuration.logo.src.nl}
[end]
[globalVar = GP:L=2]
page.10.variables.logoSrc.value = {$myext.configuration.logo.src.fr}
[end]
现在,您只需在fluidtemplate中使用{logoSrc}
...
<f:link.page pageUid="{settings.rootpid}" class="navbar-brand">
<img src="{logoSrc}" alt="Logo {settings.brandname}" />
</f:link.page>
...
。。。
...
您可以使用下面类似的方法获取当前语言UID
{namespace L=MyVendor\ExtensionKey\ViewHelpers}
<f:if condition="{L:getLangUid()} == 1">
<f:then>
<f:link.page pageUid="{settings.rootpid}" class="navbar-brand">
<img src="fileadmin/branding/brand/images/png/image1.png" alt="Logo {settings.brandname}" />
</f:link.page>
</f:then>
<f:else>
<f:link.page pageUid="{settings.rootpid}" class="navbar-brand">
<img src="fileadmin/branding/brand/images/png/image2.png" alt="Logo {settings.brandname}" />
</f:link.page>
</f:else>
</f:if>
您可以查看帮助文件
<?php
namespace MyVendor\ExtensionKey\ViewHelpers;
class GetLangUidViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper {
/**
* GetLangUid
*
**/
public function render() {
return $GLOBALS['TSFE']->sys_language_uid;
}
}
你是荷兰人吗?我是jij meer hulp nodig hebt。。。让我知道