我为TYPO3 CMS创建了自定义扩展程序。
它基本上做了一些数据库查询来从数据库中获取文本。
正如我所看到的,TYPO3编辑器在将数据存储到数据库之前对数据进行转换,例如链接<a href="....." >Link</a>
存储为<link href>My Link Text</link>
等等,对于许多这样的标记都是如此。
当我从DB查询数据时,我得到它,因为它存储在DB(<link href>My Link Text</link>
)中
所以链接不会显示出来。它们显示为普通文本..
据我所知,有两种方法:
禁用RTE转换(怎么做?)
使用lib.parseFunc_RTE(我不知道如何正确配置它)
任何想法? 感谢。
答案 0 :(得分:3)
我猜你没有使用Extbase和Fluid?作为参考,如果您使用Extbase和Fluid作为扩展,您可以使用Fluid从RTE渲染文本:
<f:format.html>{bodytext}</f:format.html>
这使用lib.parseFunc_RTE将RTE文本呈现为HTML。您还可以告诉它使用不同的TypoScript对象进行渲染:
<f:format.html parseFuncTSPath="lib.my_parseFunc">{bodytext}</f:format.html>
有用的文档:
答案 1 :(得分:1)
我遇到了同样的问题,但是使用EXTBASE函数“pi_RTEcssText”不再可用了。好吧也许是,但我不知道如何包含它。
无论如何,这是我使用EXTBASE的解决方案:
$this->cObj = $this->configurationManager->getContentObject();
$bodytext = $this->cObj->parseFunc($bodyTextFromDb, $GLOBALS['TSFE']->tmpl->setup['lib.']['parseFunc_RTE.']);
这样我就可以获得RTE格式的文本。
答案 2 :(得分:1)
我已设法通过配置包含的typoscript :
来实现# Creates persistent ParseFunc setup for non-HTML content. This is recommended to use (as a reference!)
lib.parseFunc {
makelinks = 1
makelinks.http.keep = {$styles.content.links.keep}
makelinks.http.extTarget < lib.parseTarget
makelinks.http.extTarget =
makelinks.http.extTarget.override = {$styles.content.links.extTarget}
makelinks.mailto.keep = path
tags {
link = TEXT
link {
current = 1
typolink.parameter.data = parameters : allParams
typolink.extTarget < lib.parseTarget
typolink.extTarget =
typolink.extTarget.override = {$styles.content.links.extTarget}
typolink.target < lib.parseTarget
typolink.target =
typolink.target.override = {$styles.content.links.target}
parseFunc.constants =1
}
}
allowTags = {$styles.content.links.allowTags}
并拒绝标记链接:
denyTags = link
sword = <span class="csc-sword">|</span>
constants = 1
nonTypoTagStdWrap.HTMLparser = 1
nonTypoTagStdWrap.HTMLparser {
keepNonMatchedTags = 1
htmlSpecialChars = 2
}
}
答案 3 :(得分:0)
好吧,如果有其他人遇到这个问题,
我在扩展程序文件中使用pi_RTEcssText()
函数找到了一种解决方法:
$outputText=$this->pi_RTEcssText( $value['bodytext'] );
其中$value['bodytext']
是我从扩展中的数据库查询中获得的字符串。
此功能似乎处理数据并返回完整的HTML(包含链接,段落和其他标签)。
<强> 注意:的强> 如果您还没有,则需要包含此文件:
require_once(PATH_tslib.'class.tslib_pibase.php');
位于扩展程序文件的顶部。
基本上就是这样。