You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TYPO3 9.5.11新闻无限滚动路由优化问题求助

解决方案:TYPO3 9.5.11 News扩展无限滚动的分类分页友好URL问题

我之前在TYPO3 9.5.x版本里用News扩展搭配无限滚动时,也碰到过几乎一模一样的问题——全局列表分页正常,但分类分页的友好URL死活出不来,调整路由后又触发了Bug #86895。下面是我亲测有效的解决方法:

核心问题分析

你的第二个配置里,全局分页路由/{page}的规则太宽泛,会和其他路由(比如分类路由、甚至其他页面的数字slug)产生匹配冲突,这就是触发Bug #86895的原因。同时第一个配置里的NewsList插件增强器没有关联分类参数,所以分类分页只能生成带query的URL。

我们需要做的是:

  • 给全局列表的分页路由加一个明确的前缀(比如page-),避免路由冲突
  • 为分类分页单独定义清晰的路由规则,确保分类slug和分页参数能正确映射

最终可用的config.yaml配置

routeEnhancers:
  News:
    type: Extbase
    extension: News
    plugin: Pi1
    routes:
      # 全局新闻列表分页(带page-前缀,避免冲突)
      - routePath: '/page-{page}'
        _controller: 'News::list'
        _arguments:
          page: '@widget_0/currentPage'
      # 新闻详情页
      - routePath: '/{news-title}'
        _controller: 'News::detail'
        _arguments:
          news-title: news
      # 分类新闻列表(无分页)
      - routePath: '/{category-name}'
        _controller: 'News::list'
        _arguments:
          category-name: overwriteDemand/categories
      # 分类新闻列表分页
      - routePath: '/{category-name}/page-{page}'
        _controller: 'News::list'
        _arguments:
          category-name: overwriteDemand/categories
          page: '@widget_0/currentPage'
    defaultController: 'News::list'
    defaults:
      page: '1' # 默认页码设为1,符合TYPO3分页逻辑
    requirements:
      page: '\d+' # 确保page参数只能是数字
    aspects:
      news-title:
        type: PersistedAliasMapper
        tableName: tx_news_domain_model_news
        routeFieldName: path_segment
      category-name:
        type: PersistedAliasMapper
        tableName: sys_category
        routeFieldName: slug
      page:
        type: StaticRangeMapper
        start: '1'
        end: '100' # 根据你的需求调整最大页码范围

关键配置说明

  1. 全局分页路由前缀:用/page-{page}替代原来的/{page},这样不会和分类路由/{category-name}或者其他数字slug的页面冲突,完美避开Bug #86895。
  2. 分类分页路由:单独定义/{category-name}/page-{page},明确关联分类参数overwriteDemand/categories和分页参数@widget_0/currentPage,确保生成的URL格式是/categorie/nameofthecategory/page-2。
  3. 参数验证:通过requirements确保page只能是数字,避免非法参数干扰路由匹配。
  4. 默认值设置:把page的默认值设为1,符合TYPO3分页组件的初始逻辑。

后续验证步骤

  1. 清空TYPO3的全部缓存(包括配置缓存、页面缓存)
  2. 测试全局新闻列表:滚动加载第二页,检查URL是否变为/your-news-page/page-2
  3. 测试分类新闻列表:进入某个分类页面,滚动加载第二页,检查URL是否变为/your-news-page/your-category-slug/page-2
  4. 确认无限滚动插件的配置:确保插件使用TYPO3的内置路由生成器来获取分页URL,而不是手动拼接query参数

额外排查点

如果还是有问题,可以检查:

  • 确认sys_category表的slug字段已经正确生成(可以在后台编辑分类时查看)
  • 确保News扩展的版本和TYPO3 9.5.11兼容(推荐使用News 7.x版本,对应TYPO3 9.5)
  • 检查是否有其他路由增强器和News的路由规则冲突

内容的提问来源于stack exchange,提问作者DJCrispyRice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:04:53