TYPO3环境tx_news 9.0分页最大链接数配置失效如何解决
tx_news 9.0 分页最大链接数配置失效解决方案
失效原因
TYPO3 11及以上版本废弃了fluid的widget分页组件,改用核心原生的SimplePaginator+SlidingWindowPagination分页逻辑,旧版widget会自动读取settings.list.paginate.maximumNumberOfLinks配置,新版逻辑需要手动传递参数才能生效。
解决方案步骤
- 第一步:确认TypoScript配置完整,补充分页参数映射
在你的站点TypoScript Setup中添加以下配置,保持最大链接数配置一致:plugin.tx_news { settings { list { paginate { # 保留原有的最大链接数配置,可自行修改数值 maximumNumberOfLinks = 10 # 新增适配新版分页的参数映射 pagination { maximumNumberOfLinks = {$plugin.tx_news.settings.list.paginate.maximumNumberOfLinks} } } } } } - 第二步:调整列表模板的分页partial调用参数
找到你替换n:widget.paginate后的列表模板代码,在渲染分页partial时手动传入最大链接数配置:<!-- 新闻列表渲染逻辑 --> <f:for each="{pagination.paginator.paginatedItems}" as="newsItem"> <!-- 你的新闻项渲染代码 --> </f:for> <!-- 分页导航渲染,新增maximumNumberOfLinks参数传递 --> <f:render partial="Pagination" arguments="{ pagination: pagination, maximumNumberOfLinks: settings.list.paginate.maximumNumberOfLinks }" /> - 第三步:确认分页partial逻辑(自定义partial需要检查,使用tx_news自带partial可直接跳过)
如果你使用自定义的分页partial,确保循环页码时使用滑动窗口的范围参数控制显示数量,参考逻辑:<f:if condition="{pagination.numberOfPages} > 1"> <ul class="pagination"> <!-- 上一页按钮 --> <li class="page-item{f:if(condition: pagination.previousPageNumber, else: ' disabled')}"> <a class="page-link" href="{f:uri.page(pageNumber: pagination.previousPageNumber)}">«</a> </li> <!-- 按最大链接数控制显示的页码 --> <f:for each="{pagination.allPageNumbers}" as="pageNumber"> <f:if condition="{pageNumber} >= {pagination.firstPageNumberInSlidingWindow} && {pageNumber} <= {pagination.lastPageNumberInSlidingWindow}"> <li class="page-item{f:if(condition: pageNumber == pagination.currentPageNumber, then: ' active')}"> <a class="page-link" href="{f:uri.page(pageNumber: pageNumber)}">{pageNumber}</a> </li> </f:if> </f:for> <!-- 下一页按钮 --> <li class="page-item{f:if(condition: pagination.nextPageNumber, else: ' disabled')}"> <a class="page-link" href="{f:uri.page(pageNumber: pagination.nextPageNumber)}">»</a> </li> </ul> </f:if>
问题现象参考

内容的提问来源于stack exchange,提问作者MichiBeck
相关产品推荐
相关产品推荐

