Menu 带流体的TYPO3语言开关

Menu 带流体的TYPO3语言开关,menu,typo3,typoscript,fluid,viewhelper,Menu,Typo3,Typoscript,Fluid,Viewhelper,我已经为TYPO3 7.6制作了一个语言菜单(开关),仅使用Fluid,没有TypoScript。只是一个下拉列表,请参见下面的屏幕截图。我还使用了Ext:vhs,下面是我的代码示例: {namespace v=FluidTYPO3\Vhs\ViewHelpers} <ul id="languageMenu" class="dropdown menu" data-dropdown-menu> <!-- german L:0 --> <f:if c

我已经为
TYPO3 7.6
制作了一个语言菜单(开关),仅使用
Fluid
,没有
TypoScript
。只是一个下拉列表,请参见下面的屏幕截图。我还使用了
Ext:vhs
,下面是我的代码示例:

{namespace v=FluidTYPO3\Vhs\ViewHelpers}
<ul id="languageMenu" class="dropdown menu" data-dropdown-menu>  
    <!-- german L:0 -->
    <f:if condition="{v:page.language()}==0">
        <li class="de">
            <f:link.page pageUid="{page.uid}" additionalParams="{L:0}">
                <f:image src="EXT:myext/Resources/Public/Icons/Flags/de.svg" width="18" height="14" alt="" />
                <f:translate key="LLL:EXT:myext/Resources/Private/Language/locallang.xlf:language.de" />
            </f:link.page>
            <ul class="menu languageSubMenu">
                <li class="en">
                    <f:link.page pageUid="{page.uid}" additionalParams="{L:1}">
                        <f:image src="EXT:myext/Resources/Public/Icons/Flags/gb.svg" width="18" height="14" alt="" />
                        <f:translate key="LLL:EXT:myext/Resources/Private/Language/locallang.xlf:language.en" />
                    </f:link.page>
                </li>
            </ul>
        </li>
    </f:if>


    <!-- english L:1 -->
    <f:if condition="{v:page.language()}==1">
        <li class="en">
            <f:link.page pageUid="{page.uid}" additionalParams="{L:1}">
                <f:image src="EXT:hellocode/Resources/Public/Icons/Flags/gb.svg" width="18" height="14"
                         alt="{f:translate(key: 'LLL:EXT:hellocode/Resources/Private/Language/locallang.xlf:language.en')}" />
                <f:translate key="LLL:EXT:myext/Resources/Private/Language/locallang.xlf:language.en" />
            </f:link.page>
            <ul class="menu languageSubMenu">
                <li class="de">
                    <f:link.page pageUid="{page.uid}" additionalParams="{L:0}">
                        <f:image src="EXT:myext/Resources/Public/Icons/Flags/de.svg" width="18" height="14" alt="" />
                        <f:translate key="LLL:EXT:myext/Resources/Private/Language/locallang.xlf:language.de" />
                    </f:link.page>
                </li>
            </ul>
        </li>
    </f:if>
</ul>
{namespace v=FluidTYPO3\Vhs\ViewHelpers}
此时,始终显示语言开关。如果没有页面翻译,我将得到404错误。当然,缺少的页面不存在。如果没有翻译,如何隐藏语言切换

过去我使用
USERDEF1
TypoScript
,但我需要一个带有
流体的解决方案。我还看到有一个viewhelper,但这对我不起作用,或者我不知道怎么做?!是否可以使用或
vhs
执行此操作

如蒙指教,我将不胜感激。否则我得再写一次打字稿


我只能提议使用

您可以这样简单地使用它:


当然,它是完全基于流体的,因此您可以根据需要覆盖所有模板。

您可以使用vhs和ViewHelpers语言菜单

[https://fluidtypo3.org/viewhelpers/vhs/master/Page/LanguageMenuViewHelper.html][1]

你不需要为这个扩展。viewhelpers语言菜单就足够了

下面是我使用的代码,用于辅助功能,使用bootstrap 4:

<div class="navbar-nav mr-auto dropdown show">
            <v:page.languageMenu
              hideNotTranslated="1" 
              order="0,1,2,3" 
              layout="name" 
              defaultLanguageLabel="Français"
              defaultIsoFlag="fr"
              labelOverwrite="FR,EN,NL,ES"
              as="menu">
    
              <ul class="navbar-nav mr-auto">
                <f:for each="{menu}" as="langMenu">
                  <li class="nav-item>
                    <f:if condition="{langMenu.current}=1">
                        <f:link.page pageUid="{page.uid}"
                        id="dropdownMenuLink" 
                        class="dropdown-toggle nav-link lang px-3 flag-nav--{langMenu.flag}"
                        additionalAttributes="{data-toggle:'dropdown', aria-haspopup:'true', aria-expanded:'false'}"
                        lang="{f:if(condition: '{langMenu.current}=1', then: '{langMenu.flag}')}"
                        title="<f:switch expression='{langMenu.flag}'>
                                    <f:case value='fr'>français actif, changer de langue</f:case>
                                    <f:case value='gb'>english activate, modify language</f:case>
                                    <f:case value='nl'>Engels activeren, taal wijzigen</f:case>
                                    <f:case value='es'>Español activo, cambio de idioma</f:case>
                                </f:switch>"
                        >
                            {langMenu.label}
                        </f:link.page>
                    </f:if>
                    <ul class="dropdown-menu" aria-labelledby="dropdownMenuLink" aria-expended="false">
                        
                        <f:for each="{menu}" as="langMenu">
                            <f:switch expression='{langMenu.flag}'>
                                <f:case value='fr'>{v:variable.set(value: '0', name: 'langparam')}</f:case>
                                <f:case value='gb'>{v:variable.set(value: '1', name: 'langparam')}</f:case>
                                <f:case value='nl'>{v:variable.set(value: '2', name: 'langparam')}</f:case>
                                <f:case value='nl'>{v:variable.set(value: '3', name: 'langparam')}</f:case>
                            </f:switch>
                            
                            <li>
                            

                                <f:link.page pageUid="{page.uid}"
                                class="dropdown-item"
                                lang="{langMenu.flag}"
                                title="<f:switch expression='{langMenu.flag}'>
                                            <f:case value='fr'>Passer le site en français</f:case>
                                            <f:case value='gb'>Go to english version</f:case>
                                            <f:case value='nl'>Ga naar de nederlandse versie</f:case>
                                            <f:case value='es'>Salta el sitio en español</f:case>
                                        </f:switch>"
                                additionalParams="{L:'{langparam}'}"
                                >
                                    {langMenu.label}
                                </f:link.page>
                            </li>
                        </f:for>
                        
                    </ul>
                  </li>
                </f:for>
              </ul>
            </v:page.languageMenu>
        </div>


    嗨,谢谢你的小费。Mmhh语言菜单有两个扩展名(
    static\u info\u tables
    &
    sr\u language\u menu
    )?我通常试着自己做,或者可能用typoscript。
    静态信息表
    几乎安装在我们运行的任何TYPO3实例中。我们大多数带有国家选择器的表单都需要它。好的,你说得对。我给分机的sr_语言;这是一个机会。非常感谢。但如果我能通过流体找到解决方案,那就太好了。。。没有扩展。