0

我正在使用TYPO3 9 LTSCommandController基础设施来准备一个“批处理脚本”,它将更新我的 TYPO3 安装中的一堆页面和内容元素。对于这些更新,我正在利用 TYPO3 的DataHandler

我的 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);
4

1 回答 1

1

是的:

\TYPO3\CMS\Backend\Utility\BackendUtility::getRecordLocalization($table, $uid, $language, $andWhereClause = '');

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

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

use TYPO3\CMS\Backend\Utility\BackendUtility;

$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中获得此类问题的更快答案。

于 2019-12-19T15:30:10.563 回答