Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
参见TYPO3中的原语媒体字段_Typo3_Typoscript_Typo3 6.2.x_Fal - Fatal编程技术网

参见TYPO3中的原语媒体字段

参见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

在typo36.2(刚从4.5升级)中,我有一个带有图像的TMENU,使用NO中的cObject根据需要构建菜单

它在主语言中工作,但在第二语言的前端,图像不会被渲染——除非它们被填充在第二语言的媒体字段中

如何强制文件引用原始语言的媒体字段? 就我而言,永远如此。在其他情况下,可能需要回退解决方案

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。回退到默认是一项要求。如果我能找到办法,我会告诉你的。