TYPO3:如何在自己的扩展程序中呈现tt_content文本元素?

时间:2020-03-05 18:55:38  来源:igfitidea点击:

我目前正在编写TYPO3扩展名,该扩展名配置有" tt_content" UID的列表。
这些指向类型为"文本"的内容元素,我想通过扩展名来呈现它们。

由于TYPO3特殊的方式来转换我们在进入数据库的富文本编辑中输入的文本,并在将其呈现到前端时再次对其进行转换,因此我不能只输出bodytext字段的数据库内容。

我想渲染这些文本,就像它们通常由TYPO3渲染一样。
我怎么做?

解决方案

回答

几个月前,我遇到了同样的问题。现在我必须说我不是typo3开发人员,所以我不知道这是否是正确的解决方案。

但是我使用了这样的东西:

$ output。= $ this-> pi_RTEcssText($ contentFromDb);`

在我的扩展名中,并且有效。

回答

的PHP

这对我行得通;它呈现具有给定ID的任何内容元素:

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

看到http://lists.typo3.org/pipermail/typo3-dev/2007-May/023467.html

这也适用于非缓存插件。我们将得到一个类似于<!-INT_SCRIPT.0f1c1787dc3f62e40f944b93a2ad6a81->的字符串,但是TYPO3会在下一个INT渲染通道中将其替换为真实内容。

体液

如果我们使用的是可变模板,则VHScontent.render视图帮助器将非常有用:

<v:content.render contentUids="{0: textelementid}"/>

如果fluidcontent元素本身具有网格,则可以使用flux自己的content.get或者content.render视图帮助器来渲染元素:

<f:section name="Configuration>
    ... <flux:grid.column name="teaser"/> ...
</f:section>
<f:section name="Main>
    <flux:content.render area="teaser"/>
<f:section>