TYPO3 gridelements:外观布局未正确显示
TYPO3 gridelements: appearance layout not showing correctly
我正在使用 TYPO3 10.4 和带有数据处理的 Gridelements。一切正常,除了我放置在 Gridcontainer 中的内容元素的外观/布局选项。
我已经定义了一个 TCEFORM.tt_content
布局,然后我在我的 Typoscript 中给出了自定义 class:
tt_content.stdWrap.outerWrap {
cObject = CASE
cObject {
key.field = layout
default = TEXT
default.value = |
1 = TEXT
1.value = <div class="customClass">|</div>
}
}
只要我在 gridelements 容器外使用外观布局,它就可以正常工作,元素周围环绕着一个“customClass”。
一旦我尝试在 gridelement 中使用它,就不会呈现附加包装。如何让 stdWrap 在 Gridelements 中通过?
我的 gridelements 配置是
tt_content.gridelements_pi1 {
templateRootPaths {
15 = path/to/templates/gridelements/
}
dataProcessing {
10 {
default {
options {
resolveFlexFormData = 1
resolveChildFlexFormData = 0
}
}
}
}
}
和模板文件:
<div class="column2 frame-layout-{data.layout} {f:if(condition: data.space_before_class, then: ' frame-space-before-{data.space_before_class}')}{f:if(condition: data.space_after_class, then: ' frame-space-after-{data.space_after_class}')}" id="c{data.uid}">
<f:if condition="{children}">
<f:for each="{children.1}" as="column" key="columnNumber">
<div id="c{data.uid}-{columnNumber}" class="grid-column grid-column-{columnNumber} col-lg-6">
<f:for each="{column}" as="child">
<f:render partial="Child"
arguments="{data: child.data, children: child.children, options: options, settings: settings}" />
</f:for>
</div>
</f:for>
</f:if>
</div>
编辑:我找到了一种在模板文件中使用条件的工作方式:<f:if condition="{child.data.layout} == 1">
并根据该方法将 div 和我的 customClass 包裹在 children 周围。但这似乎有点混乱和复杂。
您应该将“包装”放入流体布局文件中,然后使用部分和布局开关从流体模板文件中获取其余内容。
通过这种方式,您可以将布局信息放入预期的文件中。
要在不同的布局之间切换,您可以在模板文件中使用动态调用而不是切换 viewhelper:
<f:layout name="Layout{layout}" />
通过这种方式,您可以保持代码精简以及布局和内容呈现分离,这接近于 TypoScript“包装”的原则。
我正在使用 TYPO3 10.4 和带有数据处理的 Gridelements。一切正常,除了我放置在 Gridcontainer 中的内容元素的外观/布局选项。
我已经定义了一个 TCEFORM.tt_content
布局,然后我在我的 Typoscript 中给出了自定义 class:
tt_content.stdWrap.outerWrap {
cObject = CASE
cObject {
key.field = layout
default = TEXT
default.value = |
1 = TEXT
1.value = <div class="customClass">|</div>
}
}
只要我在 gridelements 容器外使用外观布局,它就可以正常工作,元素周围环绕着一个“customClass”。
一旦我尝试在 gridelement 中使用它,就不会呈现附加包装。如何让 stdWrap 在 Gridelements 中通过?
我的 gridelements 配置是
tt_content.gridelements_pi1 {
templateRootPaths {
15 = path/to/templates/gridelements/
}
dataProcessing {
10 {
default {
options {
resolveFlexFormData = 1
resolveChildFlexFormData = 0
}
}
}
}
}
和模板文件:
<div class="column2 frame-layout-{data.layout} {f:if(condition: data.space_before_class, then: ' frame-space-before-{data.space_before_class}')}{f:if(condition: data.space_after_class, then: ' frame-space-after-{data.space_after_class}')}" id="c{data.uid}">
<f:if condition="{children}">
<f:for each="{children.1}" as="column" key="columnNumber">
<div id="c{data.uid}-{columnNumber}" class="grid-column grid-column-{columnNumber} col-lg-6">
<f:for each="{column}" as="child">
<f:render partial="Child"
arguments="{data: child.data, children: child.children, options: options, settings: settings}" />
</f:for>
</div>
</f:for>
</f:if>
</div>
编辑:我找到了一种在模板文件中使用条件的工作方式:<f:if condition="{child.data.layout} == 1">
并根据该方法将 div 和我的 customClass 包裹在 children 周围。但这似乎有点混乱和复杂。
您应该将“包装”放入流体布局文件中,然后使用部分和布局开关从流体模板文件中获取其余内容。
通过这种方式,您可以将布局信息放入预期的文件中。
要在不同的布局之间切换,您可以在模板文件中使用动态调用而不是切换 viewhelper:
<f:layout name="Layout{layout}" />
通过这种方式,您可以保持代码精简以及布局和内容呈现分离,这接近于 TypoScript“包装”的原则。