我有一个extbase扩展,使用此
翻译页面上的一些变量if (is_array($row) && $row['sys_language_uid'] != $GLOBALS['TSFE']->sys_language_content && $GLOBALS['TSFE']->sys_language_contentOL) {
$row = $GLOBALS['TSFE']->sys_page->getRecordOverlay($table, $row,$GLOBALS['TSFE']->sys_language_content, $GLOBALS['TSFE']->sys_language_contentOL);
}
但是这是一个奇怪的错误。它只有在我登录后端时才有效。一旦我退出,我只能看到默认语言。
使用Typo3 8.7
任何想法可能会导致什么?
答案 0 :(得分:0)
如果您在Typoscript设置中的页面对象上定义了config.sys_language_overlay = 0
全局,则会发生这种情况。
Typo3 Forge中有一个ticket条目可以更深入地了解为什么会发生这种情况,并提供一些工作周期(如果您需要的话)。
答案 1 :(得分:0)
所以,我没有弄清楚问题是什么,但找到了我自己解决问题的方法。这是更新的代码:
$table = 'tx_myExt';
$query = "SELECT * FROM ".$table." WHERE pid=".$pid;
$query .= ' AND (sys_language_uid IN (-1,0) OR (sys_language_uid = ' .$GLOBALS['TSFE']->sys_language_uid. ' AND l10n_parent = 0))';
$query .= " AND deleted=0 AND hidden=0";
$res = $GLOBALS['TYPO3_DB']->sql_query($query);
while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
//localization
// check for language overlay if:
// * row is valid
// * row language is different from currently needed language
// * sys_language_contentOL is set
if (is_array($row) && $row['sys_language_uid'] != $GLOBALS['TSFE']->sys_language_content && $GLOBALS['TSFE']->sys_language_contentOL) {
$query2 = "SELECT * FROM ".$table." WHERE pid=".$pid;
$query2 .= ' AND sys_language_uid = ' .$GLOBALS['TSFE']->sys_language_content;
$query2 .= ' AND l10n_parent = ' . $row['uid'];
$query2 .= " AND deleted=0 AND hidden=0";
$res2 = $GLOBALS['TYPO3_DB']->sql_query($query2);
$row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res2);
//$row = $GLOBALS['TSFE']->sys_page->getRecordOverlay($table, $row,$GLOBALS['TSFE']->sys_language_content, $GLOBALS['TSFE']->sys_language_contentOL);
}
}
因此,我只是重复查询而不是使用getRecordOverlay
,而是直接访问已翻译的记录。我确实在某处读过这是不好的做法,但是,嘿,它现在有效,重要的是这一切;)
但是,如果有人找到解决原始问题的方法,我很乐意看到。