Typo3 Fluid игнорирует максимальные размеры изображений, заданные в typoscript - PullRequest
0 голосов
/ 17 февраля 2020

Я установил в свои константы

styles.content.textmedia.maxW = 400
styles.content.textmedia.maxWInText = 400
styles.content.imgtext.maxW = 800

и попробовал простое

<f:image src="..."></f:image>

без каких-либо параметров, и на внешнем интерфейсе изображение по-прежнему отображается на своей первоначальной ширине, игнорируя мои Константы maxW

Первоначальная проблема заключалась в том, чтобы установить разные значения maxW для каждого столбца в элементах gridelements, которые также не работали для содержания жидкости. Таким образом, я попытался сломать это до самой простой настройки maxW, и даже это не работает.

Если я возьму текст и изображение, оно будет работать, как и ожидалось, поэтому я предполагаю, что система работает правильно, но по какой-то причине текучие изображения игнорируют настройку?!

Есть ли что-то, что я сделать что-то неправильно или что-то не так, что устанавливает maxW для f: image? Я не могу установить maxW в f: изображении напрямую, потому что он может находиться в разных столбцах с разными размерами, поэтому мне нужно установить его вне тега f: image.

Обновление: Основная цель состояла в том, чтобы иметь возможность использовать gridelements в качестве gridengine и использовать dce для создания элементов содержимого, в то время как элементы должны знать ширину столбцов, они расположены для правильного масштабирования изображений.

С помощью Mikel Wohlschlegel Я получил недостающую подсказку, чтобы исправить мою проблему.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Решение:

gridelements config

tt_content.gridelements_pi1.20.10.setup {

  default < lib.gridelements.defaultGridSetup
  default {
        columns {
            default {
                renderObj = COA
                renderObj {
                    10 = LOAD_REGISTER
                    10.padding1.cObject = TEXT
                    10.padding1.cObject.data = field:parentgrid_flexform_padding1
                    10.padding2.cObject = TEXT
                    10.padding2.cObject.data = field:parentgrid_flexform_padding2
                    10.padding3.cObject = TEXT
                    10.padding3.cObject.data = field:parentgrid_flexform_padding3
                    10.colMaxWidth.cObject = CASE
                    10.colMaxWidth.cObject {
                        key.data = field:parentgrid_flexform_grid
                        default = TEXT
                        default.value = 1224
                        default.prioriCalc = 1
                    }
                    20.image.dataProcessing.20.maxGalleryWidth.data = register:colWidth
                    20.image.dataProcessing.20.maxGalleryWidthInText.data = register:colWidth

                    30 = RESTORE_REGISTER
                }
            }
        }
    }

  3 < .default
  3 {
    cObject = FLUIDTEMPLATE
    cObject {
      file = templates/gridelements/html/3columns.html
    }    
    columns {
      default.renderObj.10.colMaxWidth.cObject {
                default.value = 1224/100*33

                grid-20 = TEXT
                grid-20.value = 1224/100*20
                grid-20.prioriCalc = 1            
                grid-25 = TEXT
                grid-25.value = 1224/100*25
                grid-25.prioriCalc = 1                      
                grid-32 = TEXT
                grid-32.value = 1224/100*32
                grid-32.prioriCalc = 1                      
            } 
            0 < .default
            0.renderObj.10.colWidth.cObject = TEXT
            0.renderObj.10.colWidth.cObject {
                data = register:colMaxWidth
                stdWrap.dataWrap = | - {register:padding1} - {register:padding1}
                prioriCalc = 1
            }
            1 < .default
            1.renderObj.10.colWidth.cObject = TEXT
            1.renderObj.10.colWidth.cObject {
                data = register:colMaxWidth
                stdWrap.dataWrap = | - {register:padding2} - {register:padding2}
                prioriCalc = 1
            }
            2 < .default
            2.renderObj.10.colWidth.cObject = TEXT
            2.renderObj.10.colWidth.cObject {
                data = register:colMaxWidth
                stdWrap.dataWrap = | - {register:padding3} - {register:padding3}
                prioriCalc = 1
            }           
        }
    }

в жидкости dce, чем я могу использовать

{namespace vhs=FluidTYPO3\Vhs\ViewHelpers}
{vhs:variable.register.get(name: 'colWidth')}

для доступа к этому значению регистра.

0 голосов
/ 17 февраля 2020

Короткий ответ:

В представлении изображения автоматически не применяются никакие размеры, определенные в константах. f: изображение является частью ext: liquid, заданные вами константы являются частью ext: fluid_styled_content. В представлении изображения всегда требуется аргумент width или maxWidth, если вы хотите установить его. Вы должны передать свои константы на внешний интерфейс.

Длинный ответ:

Вы можете увидеть, как это делается в Fluid_styled_content:

Ознакомьтесь с: typo3 / sysext / fluid_styled_content / Configuration / TypoScript / ContentElement / Image.typoscript DataProcessor передает эти константы в GalleryProcessor

tt_content.image {
templateName = Image
dataProcessing {
    20 = TYPO3\CMS\Frontend\DataProcessing\GalleryProcessor
    20 {
        maxGalleryWidth = {$styles.content.textmedia.maxW}
        maxGalleryWidthInText = {$styles.content.textmedia.maxWInText}
    }
}

и передается во внешний интерфейс как {column.dimensions} См. typo3 / sysext / fluid_styled_content / Resources / Private / Partials / Media / Gallery. html

<f:render partial="Media/Type" arguments="{file: column.media, dimensions: column.dimensions, data: data, settings: settings}" />

для окончательного применения в качестве аргумента ширины в typo3 / sysext / liquid_styled_content / Resources / Private / Partials / Media /Rendering/Image.html

<f:media class="image-embed-item" file="{file}" width="{dimensions.width}" height="{dimensions.height}" alt="{file.alternative}" title="{file.title}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...