Обратитесь к медиа-полю исходного языка в TYPO3.

В TYPO3 6.2 (только что обновленном с 4.5) у меня есть TMENU с изображениями, используя cObject в NO для построения меню по желанию.

Он работает на основном языке, но во внешнем интерфейсе второго языка изображения не отображаются, если только они не заполнены в поле мультимедиа второго языка.

Как заставить ФАЙЛЫ ссылаться на медиаполе исходного языка? В моем случае всегда. В других случаях может потребоваться запасное решение.

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    
              }
            }
          } 
        }
      }
    }
}

PS в кузнице есть много ошибок, связанных с полем мультимедиа / откатом FAL, например. вот этот. Но у меня есть ощущение, что это может быть более простой вопрос.


person Urs    schedule 20.02.2015    source источник
comment
Я думаю, что это уже исправлено, но я могу ошибаться. В любом случае, вы пытались добавить поле в поля наложения в Install Tool: [FE][pageOverlayFields]   -  person pgampe    schedule 23.02.2015
comment
Спасибо! Я пробовал это, но не повезло. Но разве pageOverlayFields не работает наоборот? Я хочу всегда использовать поле языка по умолчанию, а не поле наложения. typo3-blog.com/typo3-tipps /   -  person Urs    schedule 23.02.2015
comment
Можешь посмотреть, что внутри $data во время рендеринга на нестандартном языке? Вы можете увидеть полный массив данных, выведя debug:data в любом свойстве getText, например. dataWrap = |{debug:data}. Доступ к отдельным записям можно получить через field:fieldname, например. dataWrap = |{field:uid}. Может быть, вы можете повторно использовать это и запустить над ним RECORDS, чтобы получить исходную страницу.   -  person pgampe    schedule 24.02.2015
comment
Здорово! Я получаю те же значения для uid и pid, что и на исходной странице, и снова то же значение, что и uid в _PAGES_OVERLAY_UID. Однако не уверен, как добавить это в ссылки. Сначала проверим метод mergeIfNotBlank.   -  person Urs    schedule 24.02.2015


Ответы (5)


mergeIfNotBlank теперь нет, текущее решение (TYPO3 8.7), похоже, должно установить

$GLOBALS['TCA']['pages']['columns']['media']['config']['behaviour']['allowLanguageSynchronization'] = 1;

Но на основе https://forum.typo3.org/index.php/t/217033/-typo3-ug-freiburg-media-feld-in-den-seiteneigenschaften (спасибо) вот этот фрагмент. Он также работает с вариантами урожая:

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
                }
            }
        }
    }
}

Это работает!

person Urs    schedule 21.06.2018

Основываясь на ответе Урса, здесь есть небольшая вариация.

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" />

Преимущество: вы можете определить обрезку, альтернативный текст и т. д. в своем шаблоне.

person Markus Kappe    schedule 21.11.2018

Вы можете попытаться установить TCA поля media на l10n_mode => mergeIfNotBlank . http://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#columns-properties-l10n-mode

Поместите это в typo3conf/AdditionalConfiguration.php:

$TCA['pages']['columns']['media']['l10n_mode'] = 'mergeIfNotBlank';
person pgampe    schedule 24.02.2015
comment
Тоже не повезло. Должен ли я делать что-то большее, чем очистить кеш (сделал это в инструменте установки), чтобы настройка сработала? - person Urs; 24.02.2015
comment
Да, потребуется очистка системного кеша. Однако об этом позаботится очистка кеша из Install Tool. - person pgampe; 26.02.2015

Поскольку эта проблема возникла в феврале, вы, вероятно, уже нашли решение. Я просто столкнулся с этой проблемой и решил ее, включив:

$GLOBALS['TCA']['pages_language_overlay']['columns']['media']['l10n_mode'] = 'mergeIfNotBlank';

в моем ext_tables.php

person Gabriël Ramaker    schedule 08.06.2016

В TYPO3 CMS 7.6 вам необходимо исключить поля медиа страниц таблиц из [FE][pageOverlayFields], как указано в ~/typo3_src-7.6.10/typo3/sysext/core/Configuration/DefaultConfiguration.php, пока это не будет решено — см. forge проблема https://forge.typo3.org/issues/65863

Напишите в своей дополнительной конфигурации

$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']);
person jokumer    schedule 10.08.2016