错字 3,错别字。最后发布的工作区的输出时间戳

Typo3, Typoscript. Output timestamp of last published workspace

我设置了带有工作区的 TYPO3 6.2。所有内容都在暂存工作区中更改并一起发布。 现在我想要在每一页上都有一个像 "last changes: " 这样的标签。

我不想要页面更改的日期,而是上次发布工作区编辑的日期。

我得到了类似的东西:

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>
}

我几乎被困在这里了。前端没有内容呈现。我得到了跨度,但是缺少括号和它们的内容。

我试着找例子,因为文档写得不是那么友好。

提前致谢。

您要查找的值作为 unix 时间戳存储在字段 t3ver_tstamp 中的每个工作区感知 table 中。此字段仅在发布数据或 "swapped" 时更新,这是一个特殊的发布过程。

不幸的是,select 从 sys_log table 中获取的方法将不起作用,因为相关的有效负载在字段 PHP 中被序列化 [=40] =] 比如a:2:{i:0;s:4:"Test";i:1;s:7:"pages:1";}(在本例中使用 uid 1 指向 table pages)。

据我了解,您想检索特定页面上的任何记录从草稿工作区发布到实时工作区的最后一个时间点 - 这意味着 select 最大 unix指向该特定页面的任何 table 的任何记录的时间戳。不幸的是,这不适用于普通的 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中的最大时间戳