【问题标题】:TYPO3 Language Switch with FLUIDTYPO3 语言切换与 FLUID
【发布时间】:2017-06-04 11:43:28
【问题描述】:

我为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>

目前总是显示语言切换。如果没有页面翻译,我会收到 404 错误。当然,丢失的页面不存在。如果没有翻译,如何隐藏我的语言切换?

过去我使用USERDEF1TypoScript,但我需要Fluid 的解决方案。我还看到有一个 viewhelper v:condition.page.isLanguage 但这对我不起作用或者我不知道怎么做?! Fluidvhs 可以做到这一点吗?

如果有任何建议,我将不胜感激。不然我又得写打字稿了……

【问题讨论】:

    标签: menu typo3 typoscript fluid viewhelper


    【解决方案1】:

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

    这是我使用的代码,可访问性,使用引导程序 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>
    

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 您好,感谢您的提示。嗯,语言菜单有两个扩展名(static_info_tablessr_language_menu)?我通常尝试自己做,或者用打字稿做。
      • static_info_tables 或多或少安装在我们运行的几乎所有 TYPO3 实例中。无论如何,我们大多数带有国家/地区选择器的表单都需要它。
      • 好的,你是对的。我给分机。 sr_language;菜单有机会。谢谢你。但是,如果我可以通过 FLUID 找到解决方案,那就太好了……无需扩展。
      【解决方案3】:

      您可以使用 vhs 和 ViewHelpers LanguageMenu

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-12
        • 2017-10-03
        • 2017-07-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多