TYPO3 9.5 LTS路由增强了带有uid的新闻以使路径唯一

时间:2018-12-07 06:52:21

标签: typo3 typo3-9.x

您好,我在一个人使用的TYPO3 Slack频道上发现了以下内容。 yaml的这一片段位于/config/my-websitename/config.yaml ...

routeEnhancers:
  NewsList:
    type: Extbase
    limitToPages: [2,20,21,22,92]
    extension: News
    plugin: Pi1
    routes:
      - routePath: '/p{page}'
        _controller: 'News::list'
        _arguments: {'page': '@widget_0/currentPage'}
      - routePath: '/{news_title}'
        _controller: 'News::detail'
        _arguments: {'news_title': 'news'}
    defaultController: 'News::list'
    defaults:
      page: '0'
    requirements:
      page: '\d+'
      news_title: '^[a-zA-Z0-9].*$'
    aspects:
      page:
        type: StaticRangeMapper
        start: '1'
        end: '100'
      news_title:
        type: PersistedAliasMapper
        tableName: 'tx_news_domain_model_news'
        routeFieldName: 'path_segment'

问题

但是我注意到当我有多篇标题相同的文章时,没有唯一的URL。

问题

如何将文章uid添加到路径中以使其独特,还是一个好主意?我发现文档中没有它,但是不知道如何使它有效地扩展我已有的内容,或者是否有更好的例子,有人可以给我关于如何获取新闻的唯一网址的信息?

https://docs.typo3.org/typo3cms/extensions/core/latest/Changelog/9.5/Feature-86365-RoutingEnhancersAndAspects.html#persistedpatternmapper

1 个答案:

答案 0 :(得分:1)

答案

routeEnhancers:
  NewsPlugin:
    type: Extbase
    extension: 'News'
    plugin: 'Pi1'
    routes:
      - { routePath: '/{news_title}', _controller: 'News::detail', _arguments: {'news_title': 'news'} }
    defaultController: 'News::list'
    aspects:
      news_title:
        type: PersistedPatternMapper
        tableName: 'tx_news_domain_model_news'
        routeFieldPattern: '^(?P<path_segment>.+)-(?P<uid>\d+)$'
        routeFieldResult: '{path_segment}-{uid}'