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>@
# 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.
我有一个新的 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>@
# 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.