内容元素上的 Typo3 自定义字段
Typo3 Custom filed on Content Element
我可以向每个可以添加字符串的内容元素添加自定义字段吗?
在打字错误中,我将能够读取此字符串并将其打印在 class=""
属性中,这可能吗?
每个内容元素都有注释字段,我可以在打字稿中将其标红并粘贴到 class 属性中吗?
CONTENT < styles.content.get
CONTENT.renderObj.stdWrap.dataWrap=<div class="{NOTE??}">|</div>
谢谢
更新:
这样的事情可能吗:
CONTENT < styles.content.get
CONTENT.renderObj.stdWrap {
key.field = layout
4 = TEXT
4.value = <div class="csc-default blue">|</div>
5 = TEXT
5.value = <div class="csc-default meineklasse2">|</div>
6 = TEXT
6.value = <div class="csc-default meineklasse3">|</div>
}
为了保持给定的 CI,让编辑者手动输入 CSS-class 名称通常不是一个好的选择。更好的方法是让编辑可以从一组可能的 classes 中选择。
如果您使用 tt_content
记录中已有的字段 layout
,就可以做到这一点。
因为 layout
字段的类型是 int
你可能需要 'translation' 到你期望的 class 名字,或者你留在编号 classes比如 frame-layout-1
到 frame-layout-3
。这是(在 FSC 中)内置解决方案和可用选项。
您可以增强此选项并对其进行修改。
在页面 TSconfig:
中增强选择
// Adding more layouts:
TCEFORM.tt_content.layout.addItems {
4 = my special layout
5 = my other special layout
}
// Modifying layouts names:
TCEFORM.tt_content.layout.altLabels {
1 = my default layout
}
// remove items
TCEFORM.tt_content.layout.removeItems = 2,3
在 FSC 中,此字段在布局模板 (Resources/Private/Layouts/Default.html
) 中进行评估(如果您还使用 frame_class
????)
[...]
<div id="c{data.uid}" class="frame frame-{data.frame_class} frame-type-{data.CType} 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}')}">
[...]
但是您可以用自己的文件覆盖 Default.html
文件,就像在每个流体模板系统中一样。只需将原始文件复制到您自己的 space 并将新位置添加到模板(布局)路径。
这可能会以这样的方式结束:
[...]
<div id="c{data.uid}" {f:render.section(name:'layout-selection', arguments={layout:'layout'})} ... >
[...]
<f:section name="layout-selection">
<f:switch expression="{layout}">
<f:case value="1">class="normal"</f:case>
<f:case value="4">class="special"</f:case>
<f:case value="5">class="very-special"</f:case>
<f:defaultCase>class="default"</f:defaultCase>
</f:switch>
</f:section>
根据您的 TYPO3 版本,FSC 的模板路径可以配置如下:
(最多 TYPO3 7):
lib.fluidContent {
templateRootPaths {
20 = EXT:my_extension/Resources/Private/Templates/
}
partialRootPaths {
20 = EXT:my_extension/Resources/Private/Partials/
}
layoutRootPaths {
20 = EXT:my_extension/Resources/Private/Layouts/
}
}
或(自 TYPO3 8 起):(Manual)
lib.contentElement {
templateRootPaths {
20 = EXT:my_extension/Resources/Private/Templates/
}
partialRootPaths {
20 = EXT:my_extension/Resources/Private/Partials/
}
layoutRootPaths {
20 = EXT:my_extension/Resources/Private/Layouts/
}
}
我找到了适合我的解决方案。
tt_content.stdWrap.innerWrap.cObject = CASE
tt_content.stdWrap.innerWrap.cObject {
key.field = layout
4 = TEXT
4.value = <div class="blue"><div class="container-fluid"><div class="design">|</div></div></div>
5 = TEXT
5.value = <div class="white"><div class="container-fluid"><div class="design">|</div></div></div>
6 = TEXT
6.value = <div class="grey"><div class="container-fluid"><div class="design">|</div></div></div>
}
我可以向每个可以添加字符串的内容元素添加自定义字段吗?
在打字错误中,我将能够读取此字符串并将其打印在 class=""
属性中,这可能吗?
每个内容元素都有注释字段,我可以在打字稿中将其标红并粘贴到 class 属性中吗?
CONTENT < styles.content.get
CONTENT.renderObj.stdWrap.dataWrap=<div class="{NOTE??}">|</div>
谢谢
更新:
这样的事情可能吗:
CONTENT < styles.content.get
CONTENT.renderObj.stdWrap {
key.field = layout
4 = TEXT
4.value = <div class="csc-default blue">|</div>
5 = TEXT
5.value = <div class="csc-default meineklasse2">|</div>
6 = TEXT
6.value = <div class="csc-default meineklasse3">|</div>
}
为了保持给定的 CI,让编辑者手动输入 CSS-class 名称通常不是一个好的选择。更好的方法是让编辑可以从一组可能的 classes 中选择。
如果您使用 tt_content
记录中已有的字段 layout
,就可以做到这一点。
因为 layout
字段的类型是 int
你可能需要 'translation' 到你期望的 class 名字,或者你留在编号 classes比如 frame-layout-1
到 frame-layout-3
。这是(在 FSC 中)内置解决方案和可用选项。
您可以增强此选项并对其进行修改。 在页面 TSconfig:
中增强选择// Adding more layouts:
TCEFORM.tt_content.layout.addItems {
4 = my special layout
5 = my other special layout
}
// Modifying layouts names:
TCEFORM.tt_content.layout.altLabels {
1 = my default layout
}
// remove items
TCEFORM.tt_content.layout.removeItems = 2,3
在 FSC 中,此字段在布局模板 (Resources/Private/Layouts/Default.html
) 中进行评估(如果您还使用 frame_class
????)
[...]
<div id="c{data.uid}" class="frame frame-{data.frame_class} frame-type-{data.CType} 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}')}">
[...]
但是您可以用自己的文件覆盖 Default.html
文件,就像在每个流体模板系统中一样。只需将原始文件复制到您自己的 space 并将新位置添加到模板(布局)路径。
这可能会以这样的方式结束:
[...]
<div id="c{data.uid}" {f:render.section(name:'layout-selection', arguments={layout:'layout'})} ... >
[...]
<f:section name="layout-selection">
<f:switch expression="{layout}">
<f:case value="1">class="normal"</f:case>
<f:case value="4">class="special"</f:case>
<f:case value="5">class="very-special"</f:case>
<f:defaultCase>class="default"</f:defaultCase>
</f:switch>
</f:section>
根据您的 TYPO3 版本,FSC 的模板路径可以配置如下:
(最多 TYPO3 7):
lib.fluidContent {
templateRootPaths {
20 = EXT:my_extension/Resources/Private/Templates/
}
partialRootPaths {
20 = EXT:my_extension/Resources/Private/Partials/
}
layoutRootPaths {
20 = EXT:my_extension/Resources/Private/Layouts/
}
}
或(自 TYPO3 8 起):(Manual)
lib.contentElement {
templateRootPaths {
20 = EXT:my_extension/Resources/Private/Templates/
}
partialRootPaths {
20 = EXT:my_extension/Resources/Private/Partials/
}
layoutRootPaths {
20 = EXT:my_extension/Resources/Private/Layouts/
}
}
我找到了适合我的解决方案。
tt_content.stdWrap.innerWrap.cObject = CASE
tt_content.stdWrap.innerWrap.cObject {
key.field = layout
4 = TEXT
4.value = <div class="blue"><div class="container-fluid"><div class="design">|</div></div></div>
5 = TEXT
5.value = <div class="white"><div class="container-fluid"><div class="design">|</div></div></div>
6 = TEXT
6.value = <div class="grey"><div class="container-fluid"><div class="design">|</div></div></div>
}