TYPO3 tx_news按年份归档展示活动列表的实现方法咨询
实现tx_news按年份归档的活动列表(TYPO3 v8.7.13 + tx_news v7.0.4)
嘿,刚好我对这个场景有实操经验,你提到的旧tt_news里的datetimeDaysToArchive这类预定义对象确实在tx_news里没有直接替代,但有两种靠谱的方法能实现按年份归档的需求:
方法1:使用TYPO3自带的「日期菜单」内容元素
这是最省心的原生方案,步骤如下:
- 在后台页面添加一个日期菜单类型的内容元素
- 在配置面板里,把「数据源」选择为
tx_news_domain_model_news(tx_news的新闻记录) - 设置「分组方式」为「按年」,按需调整是否显示空年份、排序方向等参数
- 给这个日期菜单配置自定义FLUID模板,结合tx_news的列表渲染逻辑,输出年份标题+对应新闻条目的结构
方法2:自定义FLUID模板+<f:groupedFor> ViewHelper
如果日期菜单的灵活性不够,直接在tx_news的列表模板里写分组逻辑更直接:
利用TYPO3的f:groupedFor ViewHelper,把新闻按发布日期的年份分组,示例代码如下:
<!-- 在tx_news的列表模板(如List.html)中替换原有列表部分 --> <f:groupedFor each="{news}" as="newsItemsPerYear" groupBy="datetime" groupKey="currentYear" dateFormat="Y" > <h3>{currentYear}</h3> <ul> <f:for each="{newsItemsPerYear}" as="newsItem"> <li> <a href="{f:uri.page(pageUid: newsItem.detailPageUid, arguments: {news: newsItem.uid})}"> {newsItem.title} </a> </li> </f:for> </ul> </f:groupedFor>
额外注意事项
- 确保所有tx_news记录都正确填写了
datetime字段(发布日期),否则分组会出错 - 如果需要筛选归档的时间范围(比如只显示近5年),可以在tx_news插件的「记录存储页」配置里,添加「附加where条件」:
datetime >= DATE_SUB(NOW(), INTERVAL 5 YEAR) - 要是需要分页功能,可以配合tx_news自带的分页配置,或者自定义分页逻辑
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

