如何控制输出记录的顺序
How to control the order of records for output
我有一个 MASK 内容元素,编辑可以在其中选择一些记录作为预告片发布(请参见下面的屏幕截图)。内容应按编辑select编辑的顺序输出。例如,UID 列表如下所示:19,18,20,17
在 MySQL 语法中,函数 SELECT FIND_IN_SET() 完成这项工作,我想 - 我如何在 [=25] 中使用它(或类似的功能) =] 打字内容对象的一部分?
提前感谢您的帮助。
编辑:我的代码示例 - orderBy 子句和 where 子句都不起作用:
table = tt_content
select {
pidInList = 11,12
uidInList.data = field:recid // the list with the wanted record IDs (19,18,20,17) transferred from the content object
recursive = 2
join = sys_category_record_mm ON sys_category_record_mm.uid_foreign = tt_content.uid
orderBy.data = field:recid
orderBy.wrap = FIND_IN_SET(`tt_content`.`uid`,'|')
where = tt_content.CType='mask_cnt_textpic_uni'
#where.data = field:recid
#where.wrap = FIND_IN_SET(`tt_content`.`uid`,'|')
where.data = field:syscats
where.intval = 1
where.wrap = sys_category_record_mm.uid_local IN (|)
max = 999
}
这是你想要的吗?
colPos 内容示例:
lib.content.left = CONTENT
lib.content.left {
table = tt_content
select {
orderBy = sorting
where = {#colPos}=1
}
}
这里的关键是select.orderBy
感谢 HerrZ 的说明,我找到了解决方案 - 这里是我的自定义脚本:
10 = CONTENT
10 {
table = tt_content
select {
pidInList = 11,12
uidInList.data = field:recid
recursive = 2
selectFields.dataWrap = *,FIND_IN_SET(`uid`,'{field:recid}') AS reclist_sortby
join = sys_category_record_mm ON sys_category_record_mm.uid_foreign = tt_content.uid
where = tt_content.CType='mask_cnt_textpic_uni'
where.data = field:syscats
where.intval = 1
where.wrap = sys_category_record_mm.uid_local IN (|)
orderBy = reclist_sortby
}
renderObj = COA
renderObj { ... }
}
重要提示: 在 FIND_IN_SET 语法中,参数必须如示例所示引用 - 否则 Typo3 将抛出错误("Incorrect parameter count in the call to native function 'FIND_IN_SET'" ).
我有一个 MASK 内容元素,编辑可以在其中选择一些记录作为预告片发布(请参见下面的屏幕截图)。内容应按编辑select编辑的顺序输出。例如,UID 列表如下所示:19,18,20,17
在 MySQL 语法中,函数 SELECT FIND_IN_SET() 完成这项工作,我想 - 我如何在 [=25] 中使用它(或类似的功能) =] 打字内容对象的一部分?
提前感谢您的帮助。
编辑:我的代码示例 - orderBy 子句和 where 子句都不起作用:
table = tt_content
select {
pidInList = 11,12
uidInList.data = field:recid // the list with the wanted record IDs (19,18,20,17) transferred from the content object
recursive = 2
join = sys_category_record_mm ON sys_category_record_mm.uid_foreign = tt_content.uid
orderBy.data = field:recid
orderBy.wrap = FIND_IN_SET(`tt_content`.`uid`,'|')
where = tt_content.CType='mask_cnt_textpic_uni'
#where.data = field:recid
#where.wrap = FIND_IN_SET(`tt_content`.`uid`,'|')
where.data = field:syscats
where.intval = 1
where.wrap = sys_category_record_mm.uid_local IN (|)
max = 999
}
这是你想要的吗?
colPos 内容示例:
lib.content.left = CONTENT
lib.content.left {
table = tt_content
select {
orderBy = sorting
where = {#colPos}=1
}
}
这里的关键是select.orderBy
感谢 HerrZ 的说明,我找到了解决方案 - 这里是我的自定义脚本:
10 = CONTENT
10 {
table = tt_content
select {
pidInList = 11,12
uidInList.data = field:recid
recursive = 2
selectFields.dataWrap = *,FIND_IN_SET(`uid`,'{field:recid}') AS reclist_sortby
join = sys_category_record_mm ON sys_category_record_mm.uid_foreign = tt_content.uid
where = tt_content.CType='mask_cnt_textpic_uni'
where.data = field:syscats
where.intval = 1
where.wrap = sys_category_record_mm.uid_local IN (|)
orderBy = reclist_sortby
}
renderObj = COA
renderObj { ... }
}
重要提示: 在 FIND_IN_SET 语法中,参数必须如示例所示引用 - 否则 Typo3 将抛出错误("Incorrect parameter count in the call to native function 'FIND_IN_SET'" ).