如何在TYPO3中检查表/字段是否为富文本字段?

问题描述 投票:0回答:0

如何在TYPO3中检查表/字段是否为富文本字段?

在 BE 或 CLI 上下文中,我想获取提供 RTE 字段的所有表/字段。

此外,获取支持类型链接的所有字段(例如

t3://page?uid?123
语法)。

用例例如:

  • 将富文本字段中使用网站上文件/页面的绝对 URL 的所有链接转换为打字链接(例如

    这是一个初步的自我回答 - 我正在使用以下方法,但可能有些事情我还没有考虑到。


    所有这些都需要考虑:

    1. 选中启用Richtext

      一个简单的检查是检查 TCA 中的 enableRichtext 字段,例如

      $GLOBALS['TCA'][$table]['columns'][$field]['config']['enableRichtext']

      但是,这不会得到所有结果,最值得注意的是

      tt_content.bodytext
      (未设置此选项的情况)!

    2. 还考虑typescolumnsOverrides(如果已定义)

      对于该字段,结果并不总是相同,取决于

      CType
      字段。它由 $GLOBALS['TCA']['tt_content']['ctrl']['type'] 中的
      type
      定义,CType 将用作 tt_content 的类型字段。

      然后在

      $GLOBALS['TCA'][$table]['types']
      中找到基于类型的附加配置,其中包含“textmedia”类型的表/字段
      tt_content.bodytext
      的以下内容:

      $GLOBALS['TCA'][$table]['types']

       'textmedia' => [
           'columnsOverrides' => [
               'bodytext' => [
                   'config' => [
                       'enableRichtext' => 1, 
                   ]   
               ]  
           ]      
       ];
      

      因此,检查富文本必须始终包含为表定义的类型。例如,如果配置不同,请参阅 tt_content (`$GLOBALS['TCA'][$table]['types']['html']['columnsOverrides']['bodytext'][ 中的 html 元素‘配置’]:

      [
          'format' => 'html',
          'renderType' => 't3editor',
      ]
      
    3. 另请检查软参考

      此外,如果检查该字段是否支持打字链接,可以检查“softref”字段

      $GLOBALS['TCA'][$table]['columns'][$field]['config']['softref']
      。如果包含
      typolink_tag
      ,则应支持打字链接。它可能看起来像这样:

      typolink_tag,email[subst],url
      

      这也可能被特定类型覆盖,如 2 中所述。

    4. 您可能还想检查 BE 是否配置了 RTE(如果相关),例如与

      $backendUser->isRTE();
      

    另一种可能更好的解决方案是使用 FormEngine 来处理。例如,如果直接在 TCA 中检查 TCA 配置

    richtextConfiguration
    ,则不考虑页面 TSconfig 的覆盖。如果您使用 FormEngine 机制(例如进行 TCA 预处理),则可以像 TYPO3 在后端使用它一样应用所有内容。然而,这使用起来不太简单,并且有它自己的陷阱(例如,从 TYPO3 v13 开始需要一个请求对象)。


    已测试 TYPO3 v11。

    更多信息

typo3
© www.soinside.com 2019 - 2024. All rights reserved.