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
相关产品推荐
相关产品推荐

