【问题标题】:How to handle news categories in route enhancers (TYPO3 v9)如何处理路由增强器中的新闻类别(TYPO3 v9)
【发布时间】:2019-02-18 14:46:37
【问题描述】:

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

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) 如何得到www.mydomain.com/de/kategorie/...这样的翻译后的URL?

欢迎任何提示。

【问题讨论】:

    标签: routes typo3 tx-news typo3-9.x


    【解决方案1】:

    前几天我发现了如下配置,里面包含了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 回复了stackoverflow

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多