Content management system 类型3:本地化条件,流体模板中的系统语言uid

Content 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

我想实现的是,图像的变化取决于当时选择的语言

这是我的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="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.ts
myext/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。。。让我知道