1

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

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

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

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

此致

4

1 回答 1

1

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

注意:我只用t3://page?uid=对此进行了测试,它可以工作。当我也找到其他用例时,我会更新这个答案

此代码发生在my_ext/Classes/Utility/MyUtility下的 Utility 类上。

我首先注入TYPO3\CMS\Frontend\ContentObject\ContentObjectRendererwith DI (Dependency Injection)

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

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

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

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>

希望它对某人有所帮助

此致

于 2021-11-24T17:24:49.987 回答