Typo3 8.7添加扩展至静态模板后Fluid模板渲染为空原因
遇到这种原本正常、加了静态包含就失效的情况,大概率是TypoScript配置的优先级或者语法出了问题,我帮你梳理几个排查方向:
1. 先确认TypoScript的前缀和路径写法是否正确
首先,你写的plugin.tx_EXT_PLUGIN是占位符对吧?实际必须替换成你的扩展key+插件key的组合,比如你的扩展key是myextension,插件key是list,那正确的前缀应该是plugin.tx_myextension_list——这个拼写错了的话,配置根本不会作用到你的插件上,模板自然找不到。
然后是路径配置的坑:别用templateRootPaths.0来设置你的模板路径!TYPO3默认已经有一个0号路径了,你直接写0会覆盖掉默认配置,反而可能导致模板查找失败。正确的做法是用更高的数字(比如10)来追加路径,确保你的扩展模板优先级更高,比如:
plugin.tx_myextension_list { view { templateRootPaths.10 = EXT:myextension/Resources/Private/Templates/ partialRootPaths.10 = EXT:myextension/Resources/Private/Partials/ layoutRootPaths.10 = EXT:myextension/Resources/Private/Layouts/ } }
另外还要检查EXT:后面的扩展key是否和你实际的扩展key完全一致,拼写错一个字母都不行。
2. 检查TypoScript的实际生效情况
进入TYPO3后端的「模板」模块,选中根页面,点击「信息」→「查看完整的TypoScript配置」,搜索你的插件配置(比如tx_myextension_list),看看实际生效的templateRootPaths数组里有没有你设置的路径。如果没有,要么是前缀写错了,要么是静态包含没加载成功;如果有但被其他路径覆盖了,就调整静态包含的顺序(把你的扩展静态包含移到更靠后的位置),或者把路径的数字改得更大(比如20)提升优先级。
3. 确认模板文件的位置和命名
虽然你说原本能渲染,但还是要再核对一遍:
- 模板文件是否在你配置的路径下?比如你配置的是
EXT:myextension/Resources/Private/Templates/,那List.html必须直接在这个目录里(如果是插件专属模板,有些扩展会放在Templates/List/子目录下,你要对应调整路径)。 - 文件名大小写要注意!TYPO3 8.7对文件名大小写敏感,必须是
List.html而不是list.html。
4. 开调试模式找具体错误
打开typo3conf/LocalConfiguration.php,把$GLOBALS['TYPO3_CONF_VARS']['FE']['debug']设为true,然后刷新前端页面。如果是模板找不到的问题,调试模式会直接抛出错误提示,告诉你系统在哪些路径找过模板,这样就能精准定位问题了。
另外也可以在模板模块里开启「TypoScript调试」,看看插件的变量传递和模板渲染流程有没有异常。
内容的提问来源于stack exchange,提问作者Burner

