类型3:是否可以为扩展制作自定义柔性表格


Typo3: Is it possible to make a custom flexform for an extension?

我正在做一个扩展,用户可以在其中发布帖子。但我希望扩展是动态的,例如,在一个页面上,用户可以上传图片,而在另一个页面中,用户不能上传图片,只能上传一些文本。

我希望能够为插件后端和前端创建一个模板,每次使用插件都可以修改。我知道有flexform,但插件的用户必须修改插件。。。

有可能吗?如果有,我该怎么做?

您应该能够在使用核心方法中的一些现有挂钩来渲染字段pi_flexform之前修改该字段的TCA,从而更改为插件加载的XML文件(包含flexform配置)。由于这是页面配置,所以每个页面的配置可能不同,但可以由子页面继承。

虽然class.t3lib_teforms.php包含许多挂钩,但我相信,要在运行中更改TCA,您必须使用不同的挂钩:t3lib/class.t3lib_userauth.php.中的postUserLookUp

  1. 创建一个包含修改TCA方法的类,并将其注册到ext_localconf.php中:$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['postUserLookUp'][] = 'EXT:YOUR_EXTENSION/class.YOUR_CLASS.php:YOUR_CLASS->YOUR_METHOD';

  2. 在您的自定义方法中,通过管理员在页面配置中设置的值覆盖$TCA['tt_content']['columns']['pi_flexform']['config']['ds']['YOUR_EXTENSION_pi1,list']的TCA。t3lib_BEfunc::getModTSconfig()应该允许您加载页面配置,并由您决定要查找的密钥。

注意:这是一个未经测试的理论,但其原理基于我的一个自定义扩展,我在其中动态修改TCA。

看看EXT:flux。克劳斯已经这么做了。https://github.com/FluidTYPO3/flux