0

我为 TYPO3 CMS 创建了一个自定义扩展。它基本上执行一些数据库查询以从数据库中获取文本。正如我所看到的,TYPO3 编辑器在将数据存储到数据库之前对其进行转换,例如,对于许多这样的标签,链接<a href="....." >Link</a>存储为<link href>My Link Text</link>等等。当我从 DB 查询数据时,我得到它,因为它存储在 DB ( <link href>My Link Text</link>) 中,因此链接不会按应有的方式显示。它们显示为普通文本..

据我所知有两种方法:

  1. 禁用 RTE 转换(怎么做?)

  2. 使用 lib.parseFunc_RTE (我不知道如何正确配置它)

任何想法?谢谢。

4

4 回答 4

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>

有用的文档:

于 2012-12-22T19:57:08.910 回答
1

我设法通过配置包含的打字稿来做到这一点:

# 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
}
}
于 2014-12-04T15:07:38.013 回答
1

我遇到了同样的问题,但使用 EXTBASE 函数“pi_RTEcssText”不再可用。好吧,也许它是,但我不知道如何包含它。

无论如何,这是我使用 EXTBASE 的解决方案:

$this->cObj = $this->configurationManager->getContentObject();
$bodytext = $this->cObj->parseFunc($bodyTextFromDb, $GLOBALS['TSFE']->tmpl->setup['lib.']['parseFunc_RTE.']);

这样我就得到了 RTE 格式的文本。

于 2013-12-05T12:35:21.760 回答
0

好吧,如果其他人遇到这个问题,

我找到了一种pi_RTEcssText()通过在我的扩展文件中使用函数来解决它的方法:

$outputText=$this->pi_RTEcssText( $value['bodytext'] );

$value['bodytext']我从扩展中的数据库查询中获得的字符串在哪里。

这个函数似乎处理数据并返回完整的 HTML(包括链接、段落和其他标签)。

注意: 如果您还没有,则需要包含此文件:

require_once(PATH_tslib.'class.tslib_pibase.php');

在扩展文件的顶部。

基本上就是这样。

于 2012-12-19T13:03:06.250 回答