如何处理路由增强器中的新闻类别(TYPO3 v9)

How to handle news categories in route enhancers (TYPO3 v9)

我为新闻插件配置了一些路由增强器:

routeEnhancers:
  NewsPlugin:
    type: Extbase
    limitToPages: [3]
    extension: News
    plugin: Pi1
    routes:
      - { routePath: '/{news_title}', _controller: 'News::detail', _arguments: {'news_title': 'news'} }
      - { routePath: '/tag/{tag_name}', _controller: 'News::list', _arguments: {'tag_name': 'overwriteDemand/tags'}}
      - { routePath: '/category/{category_name}', _controller: 'News::list', _arguments: {'category_name': 'overwriteDemand/categories'}}
    defaultController: 'News::list'
    aspects:
      news_title:
        type: PersistedAliasMapper
        tableName: 'tx_news_domain_model_news'
        routeFieldName: 'path_segment'

对于我现在得到的分类视图URL喜欢www.mydomain.com/category/2/?cHash=1234567889

三个问题: (1): 如何摆脱 cHash?这对 SEO 不友好。

(2): 如何使用分类标题而不是分类uid?我尝试添加一个方面:

category_name:
    type: PersistedAliasMapper
    tableName: 'sys_category'
    routeFieldName: 'path_segment'

但没有成功,我收到了一条不明确的错误消息。

(3) 如何将 URL 翻译成 www.mydomain.com/de/kategorie/...

欢迎任何提示。

前几天我发现了以下配置,其中包含了 ext:news 的 routeEnhancers 的所有方面:

routeEnhancers:
  PageTypeSuffix:
    type: PageType
    default: '/'
    index: '/'
    map:
      '/': 0
  NewsPlugin:
      type: Extbase
      extension: News
      plugin: Pi1
      limitToPages: [33,59]
      routes:
        # Detail view:
        - routePath: '/{news_title}'
          _controller: 'News::detail'
          _arguments: {'news_title': 'news'}
        # Categories:
        - routePath: '/{category}'
          _controller: 'News::list'
          _arguments: {'category': 'overwriteDemand/categories'}
        # Tags:
        - routePath: '/{tag_name}'
          _controller: 'News::list'
          _arguments: {'tag_name': 'overwriteDemand/tags'}    
        # Pagination:
        - routePath: '/{page}'
          _controller: 'News::list'
          _arguments: {'page': '@widget_0/currentPage'}
        # Archive:
        - routePath: '/{localized_archive}/{year}/{month}'
          _controller: 'News::archive'
        # Date:
        - routePath: '/{year}-{month}'
          _controller: 'News::list'
          _arguments:
            year: overwriteDemand/year
            month: overwriteDemand/month
      defaultController: 'News::list'
      defaults:
          page: '0'
          year: ''
          month: ''           
      requirements:
          page: '\d+'
          news_title: '^[a-zA-Z0-9].*$'
      aspects:
          page:
              type: StaticRangeMapper
              start: '1'
              end: '100'
          news_title:
              type: PersistedPatternMapper
              tableName: tx_news_domain_model_news
              routeFieldPattern: '^(?P<path_segment>.+)$'
              routeFieldResult: '{path_segment}'
          category:
              type: PersistedAliasMapper
              tableName: 'sys_category'
              routeFieldName: 'title'
          tag_name:
              type: PersistedAliasMapper
              tableName: 'tx_news_domain_model_tag'
              routeFieldName: 'title'
          localized_archive:
              type: LocaleModifier
              default: 'archive'
              routeFieldName: 'title'
              localeMap:
                - languageId: 'de_.*'
                  value: 'archiv'
                - languageId: 'fr_.*'
                  value: 'archives'
          year:
              type: StaticRangeMapper
              start: '1970'
              end: '2099'
          month:
              type: StaticValueMapper
              map:
                january: '01'
                february: '02'
                march: '03'
                april: '04'
                may: '05'
                june: '06'
                july: '07'
                august: '08'
                september: '09'
                october: 10
                november: 11
                december: 12
              localeMap:
                - locale: 'de_.*'
                  map:
                    januar: '01'
                    februar: '02'
                    maerz: '03'
                    april: '04'
                    mai: '05'
                    juni: '06'
                    juli: '07'
                    august: '08'
                    september: '09'
                    oktober: 10
                    november: 11
                    dezember: 12
                - locale: 'fr_.*'
                  map:
                    janvier: '01'
                    février: '02'
                    mars: '03'
                    avril: '04'
                    mai: '05'
                    juin: '06'
                    juillet: '07'
                    aout: '08'
                    septembre: '09'
                    octobre: 10
                    novembre: 11
                    décembre: 12

致谢:Scopestyle who answered on .

以上配置是Georg Ringer的修改版,你会发现here