0

我可以创建一个“特殊”类型的 tt_content,以便在 outputtet 之前以一些自定义方式处理文本吗?

就我而言,我想在标题和/或正文中的某处添加###MY_MARKER###,并将其替换为给定页面的正确单词。

例如:

  • 访问此页面时:mypage.com/?marker=test
  • tt_content 中的标题:“欢迎来到###MY_MARKER##,享受
  • 浏览器输出:“Welcome to TEST, enjoy”

我可以通过制作自定义插件来做到这一点。如果我可以将普通的 tt_contant 用于相同的目的,问题就更多了

4

1 回答 1

1

是的,您可以tt_content通过将自己的TCA配置添加到typo3conf/extTables.php文件来轻松扩展:

t3lib_div::loadTCA('tt_content');

$TCA['tt_content']['columns']['CType']['config']['items']['user_my_type'] = array(
  0 => 'My custom content',
  1 => 'user_my_type',
  2 => 'i/tt_content.gif',
);
$TCA['tt_content']['ctrl']['typeicon_classes']['user_my_type'] = 'mimetypes-x-content-text';
$TCA['tt_content']['ctrl']['typeicons']['user_my_type'] = 'tt_content.gif';

/* In the following either copy, insert and modify configuration from some other
   content elemenet (you can find it in the ADMIN TOOLS -> Configuration - $TCA)... */
$TCA['tt_content']['types']['user_my_type']['showitem'] = '';

/* ...or assign it some other configuration so that it's exactly the same
   as some other content type and stays the same after some update of TYPO3: */
$TCA['tt_content']['types']['user_my_type']['showitem'] = $TCA['tt_content']['types']['text']['showitem'];

之后,只需在 Typoscript 模板中设置元素应该如何呈现:

tt_content.user_my_type = COA
tt_content.user_my_type {
  10 = TEMPLATE
  10 {
    template = TEXT
    template.field = header

    marks {
      MY_MARKER = TEXT
      MY_MARKER.value = TEST
    }
  }

  20 = TEMPLATE
  20 {
    template = TEXT
    template {
      field = bodytext
      required = 1
      parseFunc = < lib.parseFunc_RTE
    }

    marks < tt_content.user_my_type.10.marks
  }
}

笔记

  1. Typoscript 渲染只是一个简化的示例。您可能希望像在其他元素中一样添加其他标准配置,例如为前端显示添加编辑图标的配置。
  2. 我的示例中的标记可以根据需要由 URL 中的 GET 参数的值填充,但这会产生令人讨厌的安全隐患。您当然需要对该输入进行很好的验证。
于 2013-10-03T15:49:52.563 回答