TYPO3 News插件首次调用sys_category图片时IMG_RESOURCE报错
问题修复:TYPO3 News分类页面侧边栏图片加载异常
问题核心原因
该问题由TYPO3页面缓存机制导致:通过链接进入页面时,系统调用预生成的缓存页面,但缓存生成时未将tx_news_pi1|overwriteDemand|categories这个GP参数作为缓存变体的区分标识,导致缓存页面中lib.catImg的内容未被正确渲染;强制刷新会绕过缓存重新生成页面,因此能正常显示。
修复方案
方案1:添加缓存变体(推荐,不影响性能)
在页面TypoScript配置中,为当前页面添加基于分类参数的缓存变体,让不同分类的页面生成独立缓存版本:
# 为新闻分类页面添加缓存变体 page.config.cache { vary { # 基于新闻分类参数区分缓存 tx_news_category { value = GP:tx_news_pi1|overwriteDemand|categories # 参数为空时使用默认值,避免缓存冲突 defaultValue = 0 } } }
方案2:将lib.catImg改为非缓存对象(性能略降,适合小流量站点)
若不想调整缓存规则,可把lib.catImg改为USER_INT对象,强制每次请求都重新渲染内容:
# cat detail page Images - 改为USER_INT避免缓存 lib.catImg = USER_INT lib.catImg { userFunc = TYPO3\CMS\Core\Resource\Rendering\FilesRenderer->render references { table = sys_category uid.data = GP:tx_news_pi1|overwriteDemand|categories fieldName = images treatIdAsReference = 1 } begin = 0 maxItems = 5 renderObj = IMG_RESOURCE renderObj { file.import.data = file:current:uid file.treatIdAsReference = 1 altText.data = file:current:title stdWrap.typolink.parameter.data = file:current:link file.maxW=1920 file.params=-rotate 0 -strip -quality 75 } }
方案3:确认TypoScript加载位置
检查lib.catImg的配置是否放在站点级setup.ts中,而非News插件的局部配置里。插件配置仅在插件渲染时生效,而侧边栏的Fluid调用是全局的,需确保TypoScript全局加载。
验证步骤
修改配置后清除TYPO3全缓存,通过链接进入不同分类页面,确认图片无需强制刷新即可正常加载。
内容的提问来源于stack exchange,提问作者webman
相关产品推荐
相关产品推荐

