代码之家  ›  专栏  ›  技术社区  ›  Seika85

类型3,类型脚本。上次发布的工作区的输出时间戳

  •  1
  • Seika85  · 技术社区  · 10 年前

    我用工作区设置了一个TYPO3 6.2。所有内容都在临时工作区中更改并一起发布。 现在,我希望在每一页上都有一个类似“最后更改:”的标签。

    我不希望更改页面的日期,但希望更改工作区编辑的最后发布日期。

    我得到了类似的东西:

    30 = CONTENT
    30 {
        table = sys_log
        select {
            selectFields = tstamp
            where = (workspace = 1 AND tablename = 'tt_content' AND details_nr = 30 AND details = 'Published')
            orderBy = tstamp DESC
            max = 1
        }
        renderObj {
            10 = TEXT
            10.stdWrap.field = tstamp
            10.stdWrap.wrap = (|)
        }
        wrap = <span class="tstamp">|</span>
    }
    

    我几乎被困在这里。前端没有呈现内容。我得到了跨度,但括号及其内容缺失。

    我试着找一些例子,因为文档不是新手友好的。

    提前感谢。

    1 回复  |  直到 10 年前
        1
  •  2
  •   Oliver Hader    9 年前

    您要查找的值存储在字段中的每个工作区感知表中 t3ver_tstamp 作为unix时间戳。只有在发布或“交换”数据(这是一个特殊的发布过程)时,才会更新此字段。

    不幸的是,从sys_log表中选择的方法不起作用,因为相关的负载是在字段log_data中序列化的PHP,例如。 a:2:{i:0;s:4:"Test";i:1;s:7:"pages:1";} (指向桌子 pages 使用uid 1 在此示例中)。

    据我所知,您希望检索特定页面上的任何记录从草稿工作区发布到实时工作区的最后一个时间点,这意味着为指向该特定页面的任何表选择任何记录上的最大unix时间戳。不幸的是,这不适用于普通的TypoScript,因此您必须实现一个用PHP实现的服务。

    假设您希望显示ID为的页面的最后发布日期 123 这将需要以下任务:

    • SELECT t3ver_tstamp FROM pages WHERE uid=123...
    • foreach (array_keys($GLOBALS['TCA']) as $tableName)
      • SELECT MAX(t3ver_tstamp) FROM $tableName WHERE pid=123 AND t3ver_wsid=0...
    • 根据以上内容确定PHP中的最大时间戳
    推荐文章