我有一个MASK内容元素,编辑者可以在其中选择一些记录作为预告片(请参见下面的屏幕截图)。内容应按照编辑器选择的顺序输出。例如,UID列表将如下所示:19,18,20,17
我认为,在MySQL语法中,函数SELECT FIND_IN_SET()可以完成这项工作-如何在印刷内容CONTENT对象的select部分中使用它(或类似的功能)?
在此先感谢您的帮助。
编辑:我的代码示例-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
}
答案 0 :(得分:0)
这就是你想要的吗?
colPos的内容示例:
lib.content.left = CONTENT
lib.content.left {
table = tt_content
select {
orderBy = sorting
where = {#colPos}=1
}
}
这里的关键是select.orderBy
答案 1 :(得分:0)
感谢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会引发错误(“对本机函数'FIND_IN_SET的调用中的参数计数不正确” )。