gridelements中列的最大图像宽度

时间:2016-09-07 08:26:40

标签: typo3 typoscript

我有一些网格,我可以通过flexform选择列宽(33.3% - 33.3% - 33.3%或25% - 50% - 25%,...)

通过使用带有flexform-field值和页面最大宽度的CASE,我获得了列的最大宽度:

…

3 < lib.gridelements.defaultGridSetup
3 {
    columns {

        1 < .default
        1.renderObj = COA
        1.renderObj {

            10 = LOAD_REGISTER
            10.colMaxWidth.cObject = CASE
            10.colMaxWidth.cObject {
                key.data = field:parentgrid_flexform_style
                default = TEXT
                default.value =

                col-1-2-1 = TEXT
                col-1-2-1.value = {$maxContentWidth} / 4
                col-1-2-1.prioriCalc = 1

                col-4-3-3 = TEXT
                col-4-3-3.value = {$maxContentWidth} / 10  * 4
                col-4-3-3.prioriCalc = 1

                col-1-1-1 = TEXT
                col-1-1-1.value = {$maxContentWidth} / 3
                col-1-1-1.prioriCalc = 1

            }

            20.textmedia.dataProcessing.20.maxGalleryWidth.stdWrap.data = register:colMaxWidth
            30 = RESTORE_REGISTER

        }
        2 < .1
        2 {
            renderObj.10.colMaxWidth.cObject {
                col-1-2-1.value = {$maxContentWidth} / 2
                col-4-3-3.value = {$maxContentWidth} / 10  * 3
            }

        }
        3 < .1
        3 {
            renderObj.10.colMaxWidth.cObject {
                col-4-3-3.value = {$maxContentWidth} / 10  * 3
            }

        }
    }
    ...
    }
}

这样可以正常工作。但我不知道该怎么办,如果使用嵌套网格?然后我必须得到父gridelement的flexform-values。

或者您计算网格列的最大图像宽度的解决方案是什么?

5 个答案:

答案 0 :(得分:0)

小心计算出的尺寸。特别是如果您使用响应式布局。在响应式布局中,列可以在较小的屏幕上更宽,因为列可以并排显示在彼此之下。

一般来说:您没有简单的方法来计算堆叠的gridelements的列宽。您可以执行非常复杂的TS配置,或者您可以使用userfunc来解决PHP中的计算。

答案 1 :(得分:0)

您是否尝试过将gridelements与fluidtemplates一起使用?

与此同时,我在所有定义的网格元素中使用它。

答案 2 :(得分:0)

不要在服务器端执行此操作,因为当客户端更改其浏览器维度时,服务器不会被注意到。使用一些CSS可以轻松解决问题的解决方案。让我们假设你没有直接渲染宽度,但是使用像引导程序这样的网格系统的类,你的渲染的gridelement HTML结构如下所示:

<div class="row">
  <div class="columns column-2"></div>
  <div class="columns column-8"><img src="someimage.jpg" width="800" height="400" /></div>
  <div class="columns column-2"></div>
</div>

您的列CSS可能如下所示:

.row{
  width: 100%;
}
.row:after{
  content: '';
  clear: both;
  height: 0px;
  visibility: hidden;
}
.columns{
  float: left;
}
.column-2{
  width: 33%;
}
.column-8{
  width: 66%;
}

现在,您希望列中的图像可以使用列自己调整大小。一个简单的最大宽度:100%;应该这样做:

.columns img{
  max-width: 100%;
}

答案 3 :(得分:0)

由于您仍在使用寄存器,因此您可以包含已计算的寄存器来计算嵌套结构的更深层次的数量。

寄存器的工作方式类似于堆栈,因此对于每个LOAD_REGISTER,您将向colMaxWidth的寄存器堆栈添加一个新值,每个RESTORE_REGISTER都将删除该值,以支持堆栈中的前一个值。

虽然这在性能上是不可取的,但只要结果被缓存,您仍然可以通过将寄存器包含在计算中来计算嵌套数量。

当您处于高度动态的页面上时,您可以使用其他解决方案。

答案 4 :(得分:0)

为什么不在TYPO3 V7 Media-Tab中使用图像编辑器?

Screenshot of the image-editor — sorry, but in German