CDRO
CDRO

Reputation: 139

TYPO3 menu also shows non translated pages

I’ve got a new TYPO3 installation with 4 languages and as we were working on the nav something strange happened: the non translated pages already showed up the nav when switching the language, although we didn't ask explicitly for it.

System is TYPO3 7.6 on PHP 5.5.

Here's how we build the 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
}

The config looks like this:

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 >


}

Thank you for any support!

Regards Tizian

Upvotes: 0

Views: 2190

Answers (1)

Ren&#233; Pflamm
Ren&#233; Pflamm

Reputation: 3354

If you dont want the language fallback (you have set it) you must change the sys_language_mode setting in typoscript:

config.sys_language_mode = strict

See more here.

Upvotes: 2

Related Questions