TYPO3 从实用文件中的正文中呈现完整的 t3:// 链接

TYPO3 render full t3:// links from bodytext in utility files

我安装了无头 TYPO3,我需要将所有内容元素呈现为 json。到目前为止,一切都很好。我现在唯一的问题是用完整的 URL 替换 t3:// 链接,因为我没有前端来处理它。所以问题是:

如何将正文 (RTE) 中的实习生 TYPO3 链接替换为完整 URL?

我尝试了以下方法,但确实有帮助:

$cObj->stdWrap_HTMLparser($element['bodytext']

此致

所以我检查了 TYPO3\CMS\Fluid\ViewHelpers\Format\HtmlViewHelper 以获得一些想法。其实很容易做到。

Note: I have only tested this with t3://page?uid= and it works. The moment i find other use cases as well, i will update this answer

此代码出现在我的实用程序 class 下 my_ext/Classes/Utility/MyUtility.

我首先用 DI(依赖注入)注入TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer

/**
 * @var ContentObjectRenderer
 */
protected ContentObjectRenderer $cObj;

/**
 * @param ContentObjectRenderer $cObj
 */
public function __construct(
    ContentObjectRenderer $cObj
) {
    $this->cObj = $cObj;
}

现在我可以使用 parseFunc 功能来替换链接,带有完整的 URls(没有基础 url)。但是我们必须定义这个函数将获得什么样的引用,在我的例子中是 lib.parseFunc。这就是它的样子:

Sometimes you only need the first and second parameters and you can leave the reference empty. You have to experiment a bit and make it work according to your needs.

public function my_module(array $teaserHomepage): array
{
  $parseFuncTSPath = 'lib.parseFunc';
  $newConstructedArray = [];
  foreach ($teaserHomepage['fields'] as $element) {
    ...
    $newConstructedArray['fields']['bodytext'] = $this->cObj->parseFunc($element['bodytext'], [], '< ' . $parseFuncTSPath);
  }

  return $newConstructedArray;
}

前面的文字:

<p>sed diam nonumy eirmod tempor invidunt ut <a href=\"t3://page?uid=2\"> labore et dolore magna aliquyam erat, sed diam.</a></span><br /> <br /> &nbsp;</p>

后文:

<p>sed diam nonumy eirmod tempor invidunt ut<a href=\"/our-jobs\"> labore et dolore magna aliquyam erat, sed diam.</a></span><br> <br> &nbsp;</p>

希望它对某人有所帮助

此致