TYPO3 DataHandler:PHP 以编程方式获取一些 ContentElement 的翻译 ContentElement UID



我正在使用TYPO39 LTS的CommandController基础架构来准备一个"批处理脚本",它将更新我的TYPO3安装中的一堆页面和内容元素。对于这些更新,我正在提升TYPO3的数据处理程序。

我的 TYPO3 安装具有页面和内容元素的德语(规范(和英语本地化,并且这些页面和内容元素处于连接模式,即英语内容元素连接到其"原始"德语内容元素。

我知道我要更新的德语和英语内容元素的 UID,但为了在我的脚本中保持简洁,我认为只需引用"规范"德语内容元素 UID 并以编程方式派生其英语本地化对应项 UID 就足够了。

是否有 TYPO3 PHP API 用于通过提供原始内容元素 UID 来获取翻译内容元素的 UID?

例如,我正在寻找类似的东西

$languageIdDe = 0; // in my installation/site, German language has languageId: '0'
$languageIdEn = 1; // in my installation/site, English language has languageId: '1'
$originalContentElementUidDe = 1234;
$translatedContentElementUidEn = ContentElementTranslationUtil::getTranslatedContentElementUid($originalContentElementUidDe, $languageIdEn);

是的,它是:

TYPO3CMSBackendUtilityBackendUtility::getRecordLocalization($table, $uid, $language, $andWhereClause = '');

此函数返回一个"具有选定记录的混合多维数组;如果不存在,则返回 FALSE"。

因此,要根据问题获取翻译内容元素的 UID:

use TYPO3CMSBackendUtilityBackendUtility;
$languageIdDe = 0; // German language has languageId: '0'
$languageIdEn = 1; // English language has languageId: '1'
$originalContentElementUidDe = 1234;
$translatedContentElementUidEn = BackendUtility::getRecordLocalization(
'tt_content',
$originalContentElementUidDe,
$languageIdEn
)[0]['uid'];

您还可以在TYPO3 Slack中更快地获得此类问题的答案。

最新更新