0

我尝试在 felogin 模板中进行语言切换,如下所示:

<!--###FORGOTP_VALID###-->
<div class="row">
    <div class="col-md-12"> 
        <p class="loginlink"><span><!--###FORGOT_PASSWORD_LINK###-->###FORGOT_PASSWORD###<!--###FORGOT_PASSWORD_LINK###--></span></p>
    </div>
</div>  
<div class="row">
    <div class="col-md-12">
        <f:if condition="{f:cObject(typoscriptObjectPath: 'lib.language')} == 'en'">    
            <p><span>Don't have an account? <a href="/sign-up/">Sign up for free!</a></span></p>
        </f:if> 
        <f:if condition="{f:cObject(typoscriptObjectPath: 'lib.language')} == 'de'">        
            <p><span>Noch kein Account? <a href="de/sign-up/">Kostenlos registrieren!</a></span></p>
        </f:if>             
    </div>
</div>  

但它忽略了条件。我错过了什么?

编辑:我添加了一个像这里建议的钩子https://docs.typo3.org/typo3cms/extensions/felogin/Hooks/Index.html和这里的例子http://labor.99grad.de/2017/07/29/typo3 -fe_login-um-eigene-marker-erweitern/ ...但我现在在登录页面上得到一个空白页面。

我在我的一个扩展“accountmanager”中添加了 $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['felogin']['postProcContent']

在 ext_tables.php 我添加了:

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['felogin']['postProcContent']['gwl_add_marker'] = 'EXT:accountmanager/Classes/Hooks/FeUserHook->addMarker';

在我的主要 setup.ts 中,我添加了:

plugin.tx_felogin_pi1 {
    templateFile = EXT:accountmanager/Resources/Private/Templates/Felogin/FrontendLogin.html
    settings {
        pidMainPage = 354
    }
}

在 Ext:accountmanager/Classes/Hooks/FeUserHook.php 我有:

<?php
namespace Vendor\Accountmanager\Hooks;

use TYPO3\CMS\Core\Utility\GeneralUtility;   

class FeUserHook {

    /**
     *  Fügt alle Settings als Marker für das FrontendLogin.html-Template ein
     *  im Stil von: ###settings.pidMainPage###
     *
     */
    public function addMarker ( $params, $_this ) {

        $objectManager = GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Object\ObjectManager');
        $cObj = $objectManager->get('TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer');

        $settings = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_felogin_pi1.']['settings.'];
        $marker = [];
        foreach ($settings as $k=>$v) {
            $marker["###settings.{$k}###"] = $v;
        }
        $content = $cObj->substituteMarkerArrayCached($params['content'], $marker);
        return $content;

但是当我将标记放在 EXT:accountmanager/Resources/Private/Templates/Felogin/FrontendLogin.html

   ###settings.pidMainPage###

...我得到一个空白页...

4

1 回答 1

0

felogin 扩展不使用 Fluid,因此您不能在模板中使用任何条件。

但是,您可以通过使用 Fluid的Hairu 扩展来实现这一点。

请注意,在这种情况下,您实际上并不需要条件,因为您的意图可以通过 <f:translate>.

于 2018-06-14T14:47:30.910 回答