TYPO3 菜单也显示未翻译的页面

TYPO3 menu also shows non translated pages

我有一个新的 TYPO3 安装,有 4 种语言,当我们在导航上工作时,发生了一些奇怪的事情:未翻译的页面在切换语言时已经显示在导航上,尽管我们没有明确要求它。

系统是 PHP5.5 上的 TYPO3 7.6。

以下是我们构建 HMENU 的方法:

# the main menu boostrap like
lib.navBarMenu = HMENU
lib.navBarMenu {
    1 = TMENU
    1 {
        # accessibility - add title for main navigation
        wrap (
            <h2 class="sr-only">{$TEXT.titleMainnav}</h2>
            <ul class="nav navbar-nav" id="nav">|</ul>
        )

        # Always unfold all sub-levels of the menu
        expAll = 1

        # Remove the (old) default behaviour which adds onfocus="blurLink(this);" to all links
        noBlur = 1

        # Define the normal state (not active, not selected) of menu items
        # Using NO=1 to activate normal state is not necessary, but useful when copying
        NO = 1
        NO {
            # Use the page title field as title property in the A-tag, and if the navigation title is set, take the value of this field
            ATagTitle {
                field = title
                stdWrap.override.cObject = TEXT
                stdWrap.override.cObject.field = nav_title
                stdWrap.override.if.isTrue.field = nav_title
            }

            # Use the option-split feature to generate a different wrap for the last item on a level of the menu
            # The last item on each level gets class="last" added for CSS styling purposes.
            #
            # See the TSref documentation for details about option split and other features:
            # http://typo3.org/documentation/document-library/references/doc_core_tsref/current/
            #wrapItemAndSub = <li class="first">|</li> |*| <li>|</li> |*| <li class="last">|</li>
            wrapItemAndSub = <li>|</li>

            # HTML-encode special characters according to the PHP-function htmlSpecialChars
            stdWrap.htmlSpecialChars = 1
        }

        IFSUB = 1
        IFSUB < .NO
        IFSUB {
            wrapItemAndSub = <li class="dropdown">|</li>                 
            ATagBeforeWrap = 1
            ATagParams = class="dropdown-toggle" data-toggle="dropdown"
            stdWrap.wrap = |<b class="caret"></b>
        }

        # Copy properties of normal to active state, and then add a CSS class for styling
        ACTIFSUB = 1
        ACTIFSUB < .IFSUB
        ACTIFSUB {
            wrapItemAndSub = <li class="dropdown active">|</li>
        }

        CURIFSUB = 1
        CURIFSUB < .IFSUB
        CURIFSUB {
            wrapItemAndSub = <li class="dropdown active">|</li>
        }

        # Copy properties of normal to active state, and then add a CSS class for styling
        ACT = 1
        ACT < .NO
        ACT {
            wrapItemAndSub = <li class="active">|</li>
        }

        # Copy properties of normal to current state, and then add a CSS class for styling
        CUR = 1
        CUR < .NO
        CUR {
            wrapItemAndSub = <li class="active">|</li>
        }
    }
    2 < .1
    2 {
        wrap = <ul class="dropdown-menu">|</ul>
        IFSUB {
            wrapItemAndSub = <li class="dropdown-submenu">|</li>
            ATagParams >
            stdWrap.wrap >
        }

        ACTIFSUB {
            wrapItemAndSub = <li class="dropdown-submenu">|</li>
            ATagParams >
            stdWrap.wrap >
        }

        CURIFSUB {
            wrapItemAndSub = <li class="dropdown-submenu">|</li>
            ATagParams >
            stdWrap.wrap >
        }
    }
    3 < .2
    4 < .2
    5 < .2
    6 < .2
    7 < .2
}

配置如下所示:

config {
    # use html5 doctype
    doctype = html5

    # meta tag with charset
    metaCharset = utf-8

    # render with this charset
    renderCharset = utf-8

    # clean up HTML code
    disablePrefixComment  = 1

    # send additional headers
    #additionalHeaders = X-UA-Compatible: IE=Edge

    # do not put _INT-JS into external files
    removeDefaultJS = external

    # concatenate js files together
    concatenateJs = {$config.compression}

    # compress javascript files
    compressJs = {$config.compression}

    # move inline CSS to external files
    inlineStyle2TempFile = 1

    # concatenate css files together
    concatenateCss = {$config.compression}

    # compress CSS files
    compressCss = {$config.compression}

    # default target for external links
    extTarget = _blank

    # enable spam protect for email addresses and define the character offset
    spamProtectEmailAddresses = -4

    # in spam protected email link replace the at-sign with this html
    spamProtectEmailAddresses_atSubst = <span style="display:none">not shown</span>&#64;

    # in spam protected email link replace the last dot with this html
    spamProtectEmailAddresses_lastDotSubst = <span style="display:none">to make life hard for spam bots</span>.

    # use L parameter for the language and pass through page type parameter
    linkVars = L,type,noCompress

    # language key to use for xlf translations (default/de/fr/etc.)
    language = {$lang.current_key}

    # set the locale (eg. de_CH.UTF-8)
    locale_all = {$lang.current_locale}

    # reference the sys_language record
    sys_language_uid = {$lang.current_uid}

    # language key to use for the <html lang=""> attribute
    htmlTag_langKey = {$lang.current_key}

    # if a page is not available in the current language, fall back to language 0 (default)
    sys_language_mode = content_fallback ; 0

    # hide content records, which do not exist in the current language, set to 1 if the default language of the record should be shown
    sys_language_overlay = hideNonTranslated

    # show images of default language content in overlay record (commaseparated list)
    sys_language_softMergeIfNotBlank = tt_news:image

    # default date format (overwrite for other languages)
    dateFormat = %A %e. %B %Y

    # default time format (overwrite for other languages)
    timeFormat = Uhr %H:%M Sek %S

    # enable the admin panel
    admPanel = 1

    # clear cache once a day
    cache_clearAtMidnight = 1

    # default caching period for a page
    cache_period = 172800

    # prefix #hash-links with the current path (needed for realurl)
    prefixLocalAnchors = all

    # enable real url if present
    tx_realurl_enable = 1

    # allow links to be made across different domains
    typolinkEnableLinksAcrossDomains = 1

    # force extbase to select all fe_users
    tx_extbase.persistence.classes.Tx_Extbase_Domain_Model_FrontendUser.mapping.recordType >

    # force extbase to select all fe_groups
    tx_extbase.persistence.classes.Tx_Extbase_Domain_Model_FrontendUserGroup.mapping.recordType >


}

感谢大家的支持!

问候 提香

如果您不想要语言回退(您已设置),您必须更改打字错误中的 sys_language_mode 设置:

config.sys_language_mode = strict

查看更多here.