1

从自己的扩展中呈现 tt_content 元素的一种方法是:

function getCE($id)
{
    $conf['tables'] = 'tt_content';
    $conf['source'] = $id;
    $conf['dontCheckPid'] = 1;
    return $this->cObj->cObjGetSingle('RECORDS', $conf);
}

是否可以向 $conf 添加一些内容,以便 tt_content 呈现本地化?假设我想要 sys_language_uid = 2 的 tt_content 行。

另一种方法是使用“getRecordOverlay”,但是cObjGetSingle 的一些功能将会丢失。

更新(适用于 TYPO3 4.5.10)

感谢您的反馈。我不知何故用“内容”的方式做错了。我没有从函数中得到任何回报。无论有无语言字段。

是否可以发布一个工作示例?假设我知道 tt_content uid 是 3389,它已被翻译成 uid 2 的语言。或者是一个简单工作示例的链接。

$conf = array(
    'table'   => 'tt_content',
    'select.' => array(
        'where'         => 'colPos=0 AND uid = 3389',
        'orderBy'       => 'sorting',
        'languageField' => 2 << if I leave this line out of the conf array I still get no result
    )
);
return $this->cObj->cObjGetSingle('CONTENT', $conf);        

BR。安德斯

4

2 回答 2

1

您可以尝试使用CONTENT而不是 RECORDS:

$conf = array(
    'table'   => 'tt_content',
    'select.' => array(
        'where'         => 'colPos=0',
        'orderBy'       => 'sorting',
        'languageField' => 'sys_language_uid' // <- Here!
    )
);
$conf['select.']['languageField'] = 'sys_language_uid';

return $this->cObj->cObjGetSingle('CONTENT', $conf);
于 2013-05-16T21:39:50.133 回答
0

您应该相应地替换RECORDSCONTENT调整$conf阵列。 http://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/Content/Index.html

CONTENT利用select http://docs.typo3.org/typo3cms/TyposcriptReference/Functions/Select/Index.html并且可以再次languageField用于正确选择翻译内容。

但是您必须将它连接到 original $id,因为内容元素确实通过l18n_parent字段“知道”它们的原始元素。您可以使用whereandWhere为它。

于 2013-05-16T21:41:53.297 回答