【问题标题】:How to control the order of records for output如何控制输出记录的顺序
【发布时间】:2019-10-21 15:04:16
【问题描述】:

我有一个 MASK 内容元素,编辑器可以在其中选择一些记录作为预告片发布(见下面的截图)。内容应按编辑器选择的顺序输出。例如,UID 列表将如下所示:19,18,20,17

我认为,在 MySQL 语法中,函数 SELECT FIND_IN_SET() 可以完成这项工作 - 我如何在印刷内容对象的选择部分中使用它(或类似功能)?

提前感谢您的帮助。

编辑:我的代码示例 - 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
}

【问题讨论】:

    标签: typo3 typoscript typo3-9.x


    【解决方案1】:

    这就是你想要的吗?

    colPos 的内容示例:

    lib.content.left = CONTENT
    lib.content.left {
        table = tt_content
        select {
            orderBy = sorting
            where = {#colPos}=1
        }
    }
    
    

    这里的关键是 select.orderBy

    【讨论】:

    • 感谢您的回答,但我不确定这是否能解决我的问题。我可以将括号中的语法也用于 FIND_IN_SET 吗?如果可以,怎么做?我的主要问题是按照它们传递的顺序输出记录(即未排序)。我在尝试解决问题的方法上方添加了一些代码,不幸的是没有成功。
    • 20 = CONTENT 20 { table = tt_content select { pidInList.data = register:pidInList selectFields.dataWrap = *,FIND_IN_SET(pid,{register:pidInList}) AS gridelements_shortcut_page_order_by where = colPos > = 0 languageField = sys_language_uid orderBy = gridelements_shortcut_page_order_by,colPos,sorting } } 这是第 3 方扩展的示例。在那里你可以找到你的 FIND_IN_SET 语法。请查看顺序以匹配您的用例。
    • 非常感谢!!您的代码示例是我需要的提示!
    【解决方案2】:

    感谢 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 call to native function 'FIND_IN_SET'”) )。

    【讨论】:

      猜你喜欢
      • 2019-10-18
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      相关资源
      最近更新 更多