Reputation: 139
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>@
# 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
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