TYPO3 tx_news 仅按年份生成dateMenu日期菜单的实现方案咨询
TYPO3 tx_news 日期菜单仅按年份筛选实现方案
1. 配置模板覆盖(避免修改原扩展代码)
首先将原扩展的日期菜单模板文件 /typo3conf/ext/news/Resources/Private/Templates/News/DateMenu.html 复制到你自己站点包的对应目录下,示例路径为 typo3conf/ext/your_site_package/Resources/Private/Templates/Extensions/News/DateMenu.html,随后在站点根TypoScript中添加模板覆盖配置:
plugin.tx_news { view { templateRootPaths { 10 = EXT:your_site_package/Resources/Private/Templates/Extensions/News/ } partialRootPaths { 10 = EXT:your_site_package/Resources/Private/Partials/Extensions/News/ } layoutRootPaths { 10 = EXT:your_site_package/Resources/Private/Layouts/Extensions/News/ } } }
注意将路径中的your_site_package替换为你实际使用的站点包扩展名称
2. 调整日期菜单分组规则
在同一TypoScript配置中添加以下配置,将日期菜单的分组逻辑调整为仅按年份分组:
plugin.tx_news.settings { dateMenu { // 仅按年维度分组 groupBy = year // 开启新闻数量统计 showCount = 1 // 日期输出格式为4位年份 dateFormat = Y } }
3. 重写日期菜单模板
将你复制到站点包下的DateMenu.html内容替换为以下代码,去掉默认的月份循环逻辑,直接输出年份列表:
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true"> <f:if condition="{dateMenus}"> <ul class="news-year-menu"> <f:for each="{dateMenus}" as="dateMenuItem"> <li> <f:link.page pageUid="{settings.listPid}" additionalParams="{ tx_news_pi1: { overwriteDemand: {year: dateMenuItem.year}, controller: 'News', action: 'list' } }"> {dateMenuItem.year} ({dateMenuItem.count}) </f:link.page> </li> </f:for> </ul> </f:if> </html>
生效验证
配置完成后清空TYPO3全站缓存,即可看到形如2019(8)、2020(12)的年份筛选菜单,点击对应年份后新闻列表页将仅展示该年份下的所有新闻。
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

