TYPO3 新闻路由有效但哈希和其他 URL 部分仍然可见

TYPO3 News Routing working but still Hash and other URL parts visible

我在 TYPO3 9.5 中遇到路由和 tx_news 问题。官方的例子都试过了,问题依旧,找不到原因。

我想 URL 喜欢:

...home/news/detail/project-lounge-movetia-2

但我得到:

...home/news/detail/project-lounge-movetia-2?tx_news_pi1[day]=11&tx_news_pi1[month]=12&tx_news_pi1[year]=2019&cHash=8fd7057d32ae3e3810b76f0bf4a06e39

标准配置:

routeEnhancers:
  News:
    type: Extbase
    limitToPages:
      - 40
      - 54
      - 55
    extension: News
    plugin: Pi1
    routes:
      - routePath: '/'
        _controller: 'News::list'
      - 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: '/{tag-name}'
        _controller: 'News::list'
        _arguments:
          tag-name: overwriteDemand/tags
    defaultController: 'News::list'
    defaults:
      page: '40'
    aspects:
      news-title:
        type: PersistedAliasMapper
        tableName: tx_news_domain_model_news
        routeFieldName: path_segment
      page:
        type: StaticRangeMapper
        start: '1'
        end: '100'
      category-name:
        type: PersistedAliasMapper
        tableName: sys_category
        routeFieldName: slug
      tag-name:
        type: PersistedAliasMapper
        tableName: tx_news_domain_model_tag
        routeFieldName: slug
    requirements:
      page: '\d+'

新闻标题得到正确的“增强”,但其余部分仍然存在(哈希、ID 等)我不知道为什么会这样。我读了很多关于路由的手册,但我不明白。 :(

它应该包含更多内容,如他们的文档中所示

routeEnhancers:
  News:
    type: Extbase
    limitToPages:
      - 104
    extension: News
    plugin: Pi1
    routes:
      - routePath: '/'
        _controller: 'News::list'
      - 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: '/{tag-name}'
        _controller: 'News::list'
        _arguments:
          tag-name: overwriteDemand/tags
    defaultController: 'News::list'
    defaults:
      page: '0'
    aspects:
      news-title:
        type: PersistedAliasMapper
        tableName: tx_news_domain_model_news
        routeFieldName: path_segment
      page:
        type: StaticRangeMapper
        start: '1'
        end: '100'
      category-name:
        type: PersistedAliasMapper
        tableName: sys_category
        routeFieldName: slug
      tag-name:
        type: PersistedAliasMapper
        tableName: tx_news_domain_model_tag
        routeFieldName: slug

不需要的参数

实际上 &tx_news_pi1[day]=20&tx_news_pi1[month]=7 之类的日期参数 不是 默认值,这意味着您复制了一些 TS 片段,其中包括它或者您的一些同事可能会放它在那里。

根据 News' Humane readable dates documentation 在您的 TypoScript 中搜索 plugin.tx_news.settings.link.hrDate 节点并修改或删除它以摆脱单视图链接中的 date 参数。

最后,如果您想保留它们,但要使用人类可读的 URL,请查看 newest documentation of the ext:news,其中有一个示例,用于通过方面进行适当的日期路由。

我找到了解决办法。问题不在于路由,而是原始新闻 URL 包含所有附加参数 {day}{month}{year}。以下 SETUP 设置关闭此功能:

plugin.tx_news.settings.link.hrDate = 0

通过禁用它,生成的原始 URl 看起来像这样: ?tx_news_pi1[action]=detail&tx_news_pi1[controller]=News&tx_news_pi1[news]=486&cHash=

现在可以完美运行了。 感谢 biesior 推动我找到解决方案!