TYPO3:自定义EXT:news插件内容元素的外层容器及Fluid模板
解决TYPO3 EXT:news插件内容元素外层容器及标题自定义问题
你提到的外层<div class="frame...">、头部标题这些内容,不是EXT:news插件的模板控制的,而是TYPO3核心的fluid_styled_content扩展负责渲染的内容元素框架。要完全自定义这部分,按以下步骤操作:
1. 自定义内容元素外层框架(frame)
- 找到系统默认模板:
EXT:fluid_styled_content/Resources/Private/Templates/ContentElement/Frame.html - 在你的自定义扩展中创建相同路径的文件,复制原模板内容后修改成你需要的结构。
- 如果只想针对news插件单独修改,可在模板里通过判断插件类型实现:
<f:if condition="{data.list_type} == 'news_pi1'"> <!-- 自定义news专属外层容器 --> <div class="my-custom-news-wrap" id="c{data.uid}"> <!-- 标题和内容将在这里插入 --> {content} </div> <f:else> <!-- 保留其他内容元素的默认框架 --> <div id="c{data.uid}" class="frame frame-default frame-type-{data.CType} frame-layout-{data.layout}"> {content} </div> </f:if>
2. 自定义头部标题
标题部分默认由EXT:fluid_styled_content/Resources/Private/Partials/ContentElement/Header.html控制:
- 同样在自定义扩展中创建对应路径的Partial文件,修改标题的标签、类名或渲染逻辑。
- 结合上面的判断,只为news插件输出自定义标题:
<!-- 在自定义的Frame.html或Header.html中 --> <f:if condition="{data.list_type} == 'news_pi1' && {data.header}"> <h3 class="news-custom-title">{data.header}</h3> </f:if>
3. 控制“通用数据”渲染
这里的通用数据如果是内容元素的附加字段(比如作者、创建日期等),可在自定义的Frame模板中直接调用{data}里的字段按需输出;如果是news插件的专属通用数据,可在你已经覆盖的news模板中调整对应部分的渲染。
4. 彻底接管渲染(进阶方案)
如果需要100%控制所有结构,可创建自定义内容元素类型:
- 在你的扩展中注册新的CType(比如
custom_news_list) - 为该CType编写独立的Fluid模板,直接整合news插件的查询和渲染逻辑,完全跳过系统默认的内容元素框架。
内容的提问来源于stack exchange,提问作者webman
相关产品推荐
相关产品推荐

