Как обрабатывать категории новостей в усилителях маршрутов (TYPO3 v9) - PullRequest
0 голосов
/ 18 февраля 2019

Я настроил некоторые усилители маршрута для плагина новостей:

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): Как избавитьсяДенежные средства?Это не подходит для SEO.

(2): Как использовать название категории вместо uid категории?Я попытался добавить аспект:

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

Но безуспешно, я получил неопределенное сообщение об ошибке.

(3) Как получить переведенный URL-адрес, такой как www.mydomain.com/de/kategorie/...?

Любые советы приветствуются.

1 Ответ

0 голосов
/ 19 февраля 2019

На днях я нашел следующую конфигурацию, которая включает в себя все аспекты routeEnhancers для ext: news:

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 .

Приведенная выше конфигурация является модифицированной версией Георга Рингера, которую вы найдете здесь .

...