为 TYPO3 CASE 键分配寄存器值
Assign register value to TYPO3 CASE key
我正在制作一些复杂的菜单,并希望使用 CASE(或类似的)来确定给定分支中子菜单的数量,以确定要使用的菜单样式。
代码:
5 = HMENU
5 {
entryLevel = -1
1 = TMENU
1 {
expAll = 1
NO = 1
NO {
...
}
IFSUB = 1
IFSUB {
10 = CASE
10 {
key.data = {register:count_menuItems}
1 = COA
1 {
data = {field:title}
data.insertData = 1
}
2 = COA
2 {
data = {field:title}
data.insertData = 1
}
default = COA
default {
data = {field:title}
data.insertData = 1
}
}
wrapItemAndSub = |
}
}
2 = TMENU
2 {
maxItems = 2
expAll = 1
...
}
}
如何让 CASE 工作?我试过带牙套和不带牙套。
找到答案了。据我所知,CASE
适用于 stdwrap.cObjects
,因此代码
10 = CASE
10 {
key.data = {register:count_menuItems}
...
}
应该是
stdWrap.cObject = CASE
stdWrap.cObject {
key.data = register:count_menuItems
if.isTrue.data = register:count_menuItems
...
}
这样就可以了。
您应该获得更多信息,了解如何访问打字错误中的字段、注册和其他数据。
如果您有一个 属性,您通常可以修改获取常量文本之外的其他信息的方式。
在您的示例中,key
属性 常量没有意义。
如果您想访问 'current' record/data 的字段,您只需使用 key.field = fieldname
如果是其他数据你修改为key.data = register:registername
可以使用 key.data = field:fieldname
访问字段
如果您希望这些数据与其他信息相关联,您可以使用换行符:
key.data = register:registername
key.wrap = prefix- | -suffix
注意:缠绕的部分在连接之前被修剪了
另一种方法是使用内联符号,您甚至可以使用多个值:
key = {register:registername}-with-{field:fieldname}
key.insertData = 1
这里有两个替换。每个都必须用大括号括起来 {}
并且你需要告诉 TYPO3 有替换要做:insertData = 1
特例TEXT
对象:
10 = TEXT
10.value = constant Text
20 = TEXT
20.field = fieldname
30 = TEXT
30.data = register:registername
40 = TEXT
40.value = register is '{register:registername}' and field is '{field:fieldname}'
40.insertData = 1
已添加:
see the manual 的打字错误数据类型 getText
在这里您可以找到其他可以用来代替 register
的东西:
然后 manual entry for data
是函数 .stdWrap
的 属性 类型 getText
.
此条目后跟 属性 field
说明,它是 data = field:
的快捷方式
(这解释了为什么 COA
和 .data
会产生任何结果,因为对任何对象执行 .stdWrap.data
都会替换对象的内容。)
请注意 field
(作为 属性 或 getText
的键)将 select
- 当前记录的一个字段,可能因上下文而异:
- 对于页面渲染是当前页面的记录(table
pages
),
- 对于呈现内容元素,它是元素 (table
tt_content
),
- 在 filesProcessor 中它是一个文件 (table
sys_file
_reference`),
- 在
CONTENT
、RECORDS
或split
的renderObj
中是您定义的选择。
我正在制作一些复杂的菜单,并希望使用 CASE(或类似的)来确定给定分支中子菜单的数量,以确定要使用的菜单样式。
代码:
5 = HMENU
5 {
entryLevel = -1
1 = TMENU
1 {
expAll = 1
NO = 1
NO {
...
}
IFSUB = 1
IFSUB {
10 = CASE
10 {
key.data = {register:count_menuItems}
1 = COA
1 {
data = {field:title}
data.insertData = 1
}
2 = COA
2 {
data = {field:title}
data.insertData = 1
}
default = COA
default {
data = {field:title}
data.insertData = 1
}
}
wrapItemAndSub = |
}
}
2 = TMENU
2 {
maxItems = 2
expAll = 1
...
}
}
如何让 CASE 工作?我试过带牙套和不带牙套。
找到答案了。据我所知,CASE
适用于 stdwrap.cObjects
,因此代码
10 = CASE
10 {
key.data = {register:count_menuItems}
...
}
应该是
stdWrap.cObject = CASE
stdWrap.cObject {
key.data = register:count_menuItems
if.isTrue.data = register:count_menuItems
...
}
这样就可以了。
您应该获得更多信息,了解如何访问打字错误中的字段、注册和其他数据。
如果您有一个 属性,您通常可以修改获取常量文本之外的其他信息的方式。
在您的示例中,key
属性 常量没有意义。
如果您想访问 'current' record/data 的字段,您只需使用 key.field = fieldname
如果是其他数据你修改为key.data = register:registername
可以使用 key.data = field:fieldname
如果您希望这些数据与其他信息相关联,您可以使用换行符:
key.data = register:registername
key.wrap = prefix- | -suffix
注意:缠绕的部分在连接之前被修剪了
另一种方法是使用内联符号,您甚至可以使用多个值:
key = {register:registername}-with-{field:fieldname}
key.insertData = 1
这里有两个替换。每个都必须用大括号括起来 {}
并且你需要告诉 TYPO3 有替换要做:insertData = 1
特例TEXT
对象:
10 = TEXT
10.value = constant Text
20 = TEXT
20.field = fieldname
30 = TEXT
30.data = register:registername
40 = TEXT
40.value = register is '{register:registername}' and field is '{field:fieldname}'
40.insertData = 1
已添加:
see the manual 的打字错误数据类型 getText
在这里您可以找到其他可以用来代替 register
的东西:
然后 manual entry for data
是函数 .stdWrap
的 属性 类型 getText
.
此条目后跟 属性 field
说明,它是 data = field:
的快捷方式
(这解释了为什么 COA
和 .data
会产生任何结果,因为对任何对象执行 .stdWrap.data
都会替换对象的内容。)
请注意 field
(作为 属性 或 getText
的键)将 select
- 当前记录的一个字段,可能因上下文而异:
- 对于页面渲染是当前页面的记录(table
pages
), - 对于呈现内容元素,它是元素 (table
tt_content
), - 在 filesProcessor 中它是一个文件 (table
sys_file
_reference`), - 在
CONTENT
、RECORDS
或split
的renderObj
中是您定义的选择。