You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TYPO3 V11导入t3d文件时保留crdate与tstamp值的方法

TYPO3导入T3D保留crdate/tstamp时间戳的解决方法

方法1:导出时启用时间戳保留选项

在导出T3D文件的向导中,进入高级设置,勾选「保留创建/修改时间戳(crdate/tstamp)」选项。启用后导出的T3D会携带原始实例的时间戳数据,导入时不会被当前时间覆盖。

方法2:手动编辑已导出的T3D文件

如果已经导出了T3D文件,可直接修改XML内容:

  • 用文本编辑器打开T3D文件,定位到目标记录的<field name="crdate">和<field name="tstamp">节点;
  • 将节点内的NULL或当前时间值替换为原始实例中的Unix时间戳(10位数字格式);
  • 保存修改后重新导入即可。

方法3:自定义导入逻辑(开发方案)

通过TYPO3的事件机制改写导入行为,强制保留原始时间戳:

  • 注册\TYPO3\CMS\Core\DataHandling\Event\AfterDatabaseOperationsEvent事件,在记录写入数据库后覆盖时间戳值;
  • 示例代码片段:
public function handleAfterDatabaseOperations(\TYPO3\CMS\Core\DataHandling\Event\AfterDatabaseOperationsEvent $event): void
{
    $targetTables = ['pages', 'tt_content', 'tx_yourext_domain_model_event'];
    $table = $event->getTable();
    $record = $event->getRecord();
    
    if (in_array($table, $targetTables) && isset($record['crdate'], $record['tstamp'])) {
        $GLOBALS['TYPO3_DB']->exec_UPDATEquery(
            $table,
            'uid=' . (int)$event->getUid(),
            ['crdate' => $record['crdate'], 'tstamp' => $record['tstamp']]
        );
    }
}

方法4:使用第三方扩展优化导入

部分第三方扩展(如t3dexport)针对T3D导入导出做了优化,可自动保留时间戳,需根据TYPO3版本选择兼容的扩展使用。


内容的提问来源于stack exchange,提问作者Ganybhat-Satvam Software

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 04:42:35