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>