TYPO3 tt_content 结构:t3_origuid vs l18n_parent

TYPO3 tt_content structure: t3_origuid vs l18n_parent

我不得不将一些帖子从一个 TYPO3 站点导入到另一个站点,这导致了对数据库结构的一些探索。出现了一个具体问题:

在本地化的内容元素中(tt_content 个 sys_language_uid = 1 的条目),字段 t3_origuidl18n_parent 被冗余填充。后端本地化视图需要 l18n_parent 才能工作。

它们总是具有相同的值吗?或者是否存在字段值可以不同的用例?

这些字段可以有不同的值。

t3_origuid 是一个通用字段,指向以某种方式从中派生当前记录的记录。例如通过复制或本地化它。 Here 是它的一些文档。

字段 l18n_parent 保留用于本地化目的。

作为 Jost 的 post:

的补充

要确定您应该使用哪个字段,请检查以下值:
$TCA['tx_yourtable']['ctrl']['transOrigPointerField']

即。 tt_content 是:

$TCA['tt_content']['ctrl']['transOrigPointerField'] = 'l18n_parent';

l10n_parent / l18n_parent

在TCA中配置为transOrigPointerField(通常是l10n_parentl18n_parent)的字段用于本地化。 它始终包含默认语言记录的 ID(即使该记录是从非默认语言记录翻译而来的),参见 https://docs.typo3.org/typo3cms/TCAReference/singlehtml/#transorigpointerfield

t3_origuid

在TCA中配置为origUid(通常是t3_origuid)的字段在复制或翻译记录时被填充,并包含源记录的id,参见https://docs.typo3.org/typo3cms/TCAReference/singlehtml/#origuid

在某些情况下,这些字段将具有相同的值(例如,从默认语言翻译记录),但在其他情况下将具有不同的值。例如。在同一页上复制记录时 t3_origuid 将不同于 l10n_parent.

要允许本地化,需要 transOrigPointerField (l10n_parent)。拥有 origUid (t3_origuid) 字段不是硬性要求,而是一种很好的做法,因为一些附加功能可能需要它才能工作。特别是在较新版本的 TYPO3 中。例如,翻译向导当前正在使用 t3_origuid 字段。

l10n_source(自 TYPO3 8.6 起)

自 TYPO3 8.6 以来,针对 tt_content table 引入了新的数据库字段 l10n_source 以及新的 TCA ctrl 配置 translationSourcetranslationSource 字段包含用作翻译源的记录的 uid,无论该记录是在自由模式下还是在连接模式下翻译的。

documentation on l10n_source field

中查看更多内容