参见TYPO3中的原语媒体字段
在typo36.2(刚从4.5升级)中,我有一个带有图像的TMENU,使用NO中的cObject根据需要构建菜单 它在主语言中工作,但在第二语言的前端,图像不会被渲染——除非它们被填充在第二语言的媒体字段中 如何强制文件引用原始语言的媒体字段? 就我而言,永远如此。在其他情况下,可能需要回退解决方案参见TYPO3中的原语媒体字段,typo3,typoscript,typo3-6.2.x,fal,Typo3,Typoscript,Typo3 6.2.x,Fal,在typo36.2(刚从4.5升级)中,我有一个带有图像的TMENU,使用NO中的cObject根据需要构建菜单 它在主语言中工作,但在第二语言的前端,图像不会被渲染——除非它们被填充在第二语言的媒体字段中 如何强制文件引用原始语言的媒体字段? 就我而言,永远如此。在其他情况下,可能需要回退解决方案 temp.menu = COA temp.menu { wrap = <div class="teasermenu">|</div> 15 = HMENU 15
temp.menu = COA
temp.menu {
wrap = <div class="teasermenu">|</div>
15 = HMENU
15 {
special = list
//special.value.cObject < temp.displayedpages
// recieves a list, such as:
special.value = 1,3,9
1 = TMENU
1 {
noBlur = 1
maxItems = 16
wrap = <ul>|</ul>
NO {
wrapItemAndSub = <li>|</li>
ATagBeforeWrap = 1
ATagParams = || || || || class="red" |*| |*|
stdWrap.cObject=COA
stdWrap.cObject{
10 = TEXT
10.field = nav_title // title
10.wrap = <strong class="teasermenu_header">|</span></strong>
20=FILES
20{
if{
isInList.field = uid
//value.cObject < temp.displayedpages_wimage
// receives another list, like:
// value = 3,9
}
references {
table=pages
fieldName=media
}
renderObj=IMAGE
renderObj{
file{
height=80
maxH=80
import.data=file:current:publicUrl
}
altText.field=title
titleText.field=title
}
}
}
}
}
}
}
temp.menu=COA
临时菜单{
包裹=|
15=汉努
15 {
特殊=列表
//special.value.cObject|
没有{
wrapItemAndSub=|
ATagBeforeWrap=1
ATagParams=| | | | | | | class=“red”|*||*|
stdWrap.cObject=COA
stdWrap.cObject{
10=文本
10.字段=导航标题//标题
10.wrap=|
20=文件
20{
如果{
isInList.field=uid
//value.cObject
PS forge上存在许多与媒体字段/FAL回退相关的错误,例如。但我觉得这可能是一个更简单的问题。您可能希望尝试将
媒体的TCA
字段设置为l10n\u模式=>mergeIfNotBlank
。
将其放入typo3conf/AdditionalConfiguration.php
:
$TCA['pages']['columns']['media']['l10n_mode'] = 'mergeIfNotBlank';
由于这个问题来自二月,您现在可能已经找到了解决方案。我刚刚遇到了这个问题,并通过以下方式解决了它:
$GLOBALS['TCA']['pages_language_overlay']['columns']['media']['l10n_mode'] = 'mergeIfNotBlank';
在使用TYPO3 CMS 7.6的my ext_tables.php中,您需要按照~/TYPO3_src-7.6.10/TYPO3/sysext/core/Configuration/DefaultConfiguration.php中的设置,从[FE][pageOverlayFields]中排除表页的字段媒体,直到问题得到解决-请参阅forge问题
写入您的附加配置
$GLOBALS['TYPO3_CONF_VARS']['FE']['pageOverlayFields'] = 'uid,doktype,title,subtitle,nav_title,keywords,description,abstract,author,author_email,url,urltype,shortcut,shortcut_mode';
或者在扩展名ext_localconf.php中
$GLOBALS['TYPO3_CONF_VARS']['FE']['pageOverlayFields'] = str_replace(',media', '', $GLOBALS['TYPO3_CONF_VARS']['FE']['pageOverlayFields']);
mergeIfNotBlank
现在不存在了,当前的解决方案(TYPO3 8.7)似乎需要设置
$GLOBALS['TCA']['pages']['columns']['media']['config']['behaviour']['allowLanguageSynchronization'] = 1;
但是基于(谢谢)这里有一个片段。它也适用于作物变量:
temp.bgimg_wide = CONTENT
temp.bgimg_wide{
table = sys_file_reference
select{
pidInList = {$pids.pidHome}
where = tablenames='pages' AND fieldname='media'
orderBy = sorting_foreign
languageField = 0
selectFields = uid_local
max = 1
begin = 0
}
renderObj = FILES
renderObj{
files.stdWrap.field = uid
renderObj = IMG_RESOURCE
renderObj {
file {
import.data = file:current:uid
treatIdAsReference = 1
width = 1600
cropVariant = bgimg_wide
}
}
}
}
}
这管用 根据Urs的回答,这里有一点变化
lib.getCurrentPageMedia = CONTENT
lib.getCurrentPageMedia {
table = sys_file_reference
select{
pinInList = root, this
where = tablenames='pages' AND fieldname='media' AND uid_foreign=###pid###
orderBy = sorting_foreign
languageField = 0
selectFields = uid_local
max = 1
begin = 0
markers {
pid.data = TSFE:id
}
}
renderObj = TEXT
renderObj.stdWrap.field = uid
}
流体:
<f:image src="{f:cObject(typoscriptObjectPath:'lib.getCurrentPageMedia')}" alt="" width="400c" height="400c" treatIdAsReference="1" class="img-responsive" />
优点:您可以在模板中定义裁剪、alt文本等。我认为这已经修复,但我可能错了。不管怎样,您是否已尝试在安装工具中将该字段添加到覆盖字段中:[FE][pageOverlayFields]
谢谢!我试过了,但是运气不好。但是,pageOverlayFields
是否反过来工作?我希望始终使用默认语言字段,而不是覆盖字段。在以非默认语言进行渲染时,是否可以查看$data
中的内容?您可以通过在任何getText
属性中输出debug:data
来查看完整的数据数组,例如dataWrap={debug:data}
。可以通过field:fieldname
访问各个条目,例如dataWrap={field:uid}
。也许你可以重复使用它并在上面运行一些记录来获得原始页面。太棒了!我得到的uid和pid值与原始页面中的值相同,并且再次得到与_PAGES\u OVERLAY\u uid中的uid值相同的值。但不知道如何将其添加到引用中。我会先检查合并方式,也不会有好运。我需要做的不仅仅是清除缓存(是否在安装工具中)才能启动设置?是的,需要清除系统缓存。但是,从安装工具中清除缓存可以解决这一问题。您认为这是否也可以用于解决安装工具中的extbase问题?我对tx_新闻有类似的问题,例如。。。嗯,可能不是,因为mergeIfNotBlank也是一个候选人……我不确定。下周我需要翻译FAL。回退到默认是一项要求。如果我能找到办法,我会告诉你的。