Меню TYPO3 также показывает непереведенные страницы.

У меня новая установка TYPO3 с 4 языками, и когда мы работали над навигацией, произошло нечто странное: непереведенные страницы уже показывали навигацию при переключении языка, хотя мы явно не просили об этом.

Система TYPO3 7.6 на PHP 5.5.

Вот как мы строим 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 >


}

Спасибо за любую поддержку!

С уважением Тициан


person CDRO    schedule 09.09.2016    source источник


Ответы (1)


Если вам не нужен резервный язык (вы его установили), вы должны изменить настройку sys_language_mode в typoscript:

config.sys_language_mode = strict

Подробнее см. здесь.

person René Pflamm    schedule 09.09.2016
comment
Это также могло быть $GLOBALS['TYPO3_CONF_VARS']['FE']['hidePagesIfNotTranslatedByDefault'] = '1'; который был изменен на 0. - person Jozef Spisiak; 09.09.2016