我正在进行扩展,用户可以发布帖子。但我希望扩展程序是动态的,以便例如在一个页面上用户可以上传图片,而在另一个页面上用户无法上传图片而是上传一些文字。
我希望能够为插件后端创建一个模板,并为前端创建一个模板,您可以为插件的每次使用修改该模板。 我知道有flexform但是插件的用户必须修改插件......
是否可能,如果可以,我该怎么做?
答案 0 :(得分:2)
您应该能够通过使用核心方法中的一些现有挂钩来修改字段 pi_flexform 之前的TCA,从而更改为加载的XML文件(包含flexform配置)你的插件。由于这是页面配置,因此每个页面可能不同,但可以通过子页面继承。
虽然 class.t3lib_tceforms.php 包含很多钩子,但我相信如果要动态更改TCA,您将不得不使用另一个:{strong> t3lib / postUserLookUp
class.t3lib_userauth.php 强>
创建一个包含修改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';
在自定义方法中,按照管理员在页面配置中设置的值覆盖$TCA['tt_content']['columns']['pi_flexform']['config']['ds']['YOUR_EXTENSION_pi1,list']
的TCA。 t3lib_BEfunc::getModTSconfig()
应该允许您加载页面配置,由您决定要查找的密钥。
注意:这是未经测试的理论,但其原理基于我的一个自定义扩展,我可以动态修改TCA。
答案 1 :(得分:0)
看看EXT:flux。克劳斯已经这样做了。 https://github.com/FluidTYPO3/flux