如何控制输出记录的顺序

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'" ).