首页 > 解决方案 > 类别和标签的新闻 URL 问题

问题描述

以下是使新闻页面 URL 用户友好的代码。详细信息页面 URL 可以很好地处理此问题,但不适用于类别和标签。

News:
type: Extbase
limitToPages:
  - 16
extension: News
plugin: Pi1
routes:
  -
    routePath: '/page/{page}'
    _controller: 'News::list'
    _arguments:
      page: '@widget_0/currentPage'
  -
    routePath: '/{news_title}'
    _controller: 'News::detail'
    _arguments:
      news_title: news
  -
    routePath: '/topic/{category_name}'
    _controller: 'News::list'
    _arguments:
      category_name: overwriteDemand/categories
  - 
    routePath: '/tag/{tag_name}'
      _controller: 'News::list'
      _arguments:
        tag_name: 'overwriteDemand/tags'
defaultController: 'News::list'
defaults:
  page: '0'
requirements:
  news_title: '^[a-zA-Z0-9].*$'
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: path_segment
  tag_name:
    type: PersistedAliasMapper
    tableName: tx_news_domain_model_tag
    routeFieldName: slug

任何人,请帮助我找出这是什么问题?我已经评论了skipControllerAndAction = 1

Typo3 版本 - 10.4.16,新闻 - 8.5.2

谢谢!

标签: typo3seotx-newstypo3-10.x

解决方案


您的类别 routePath 不符合您定义的要求(没有news_title)。

文档说:

如果生成 URL 的输入不符合要求,则路由增强器不提供变体,并将参数作为常规查询参数添加到 URL。

只需在他们所属的 routePath 中移动需求(详细视图的需求)。

更新:更正 YAML 以阐明所需的更改

News:
    ...
    routes:
      -
        ...
      -
        routePath: '/{news_title}'
        _controller: 'News::detail'
        _arguments:
          news_title: news
        requirements:
          news_title: '^[a-zA-Z0-9].*$'
    defaultController: 'News::list'
    defaults:
      page: '1'        
    aspects:
      news_title:
        type: PersistedAliasMapper
        tableName: tx_news_domain_model_news
        routeFieldName: path_segment
      ...

推荐阅读