Typo3 9 Конфигурация маршрутизации генерирует ошибку 404 - PullRequest
0 голосов
/ 27 мая 2020

У нас есть сервер Typo3 9, на котором работает ряд веб-сайтов. У нас также есть подключаемый модуль новостей, который упрощает добавление сообщений в блог.

С Typo3 9 старая система RealURL была заменена встроенной системой. Это работает для обычных страниц, но не работает для новостных статей.

Мы реализовали следующий файл YAML confi c, который основан на примерах, предоставленных плагином новостей и рядом других стеков. переполнение постов. Проблема в том, что, хотя мы можем подтвердить, что конфигурация загружена, мы получаем ошибку 404:

404 Page not found!

Reason: The requested page does not exist

Current URL: /blog/2020-january/

Затем мы начали тщательное, построчное изучение кода, чтобы понять, что происходит не так. Нам удалось отобразить страницу /blog/2020-january/, но на ней не было содержимого. Ни одна из отдельных страниц блога тоже не разрешает.

Есть ли другие конфигурации, которые мы должны искать для включения этой функции? У нас был другой сотрудник Typo3, который безуспешно смотрел на проблему.

rootPageId: 156
base: 'https://example.site'
baseVariants: {  }
languages:
  -
    title: English
    enabled: true
    languageId: '0'
    base: /
    typo3Language: default
    locale: en_AU
    iso-639-1: en
    navigationTitle: ''
    hreflang: ''
    direction: ''
    flag: au
errorHandling: {  }
routes: {  }
routeEnhancers:
    PageTypeSuffix:
      type: PageType
      default: '/'
      index: '/'
      map:
        '/': 0
    NewsPlugin:
        type: Extbase
        extension: News
        plugin: Pi1
        limitToPages:
          - 187
          - 201
        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

Ответы [ 2 ]

0 голосов
/ 11 июня 2020

После больших усилий мы добились успеха.

Во-первых, финальная рабочая конфигурация:

routeEnhancers:
  NewsPlugin:
    type: Extbase
    extension: News
    plugin: Pi1
    limitToPages:
      - 201
      - 187
    routes:
      -
        routePath: '/{news_title}'
        _controller: 'News::detail'
        _arguments:
          news_title: news
      -
        routePath: '/{category}'
        _controller: 'News::list'
        _arguments:
          category: overwriteDemand/categories
      -
        routePath: '/{tag_name}'
        _controller: 'News::list'
        _arguments:
          tag_name: overwriteDemand/tags
      -
        routePath: '/page-{page}'
        _controller: 'News::list'
        _arguments:
          page: '@widget_0/currentPage'
      -
        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: PersistedAliasMapper
        tableName: tx_news_domain_model_news
        routeFieldName: path_segment
      category:
        type: PersistedAliasMapper
        tableName: sys_category
        routeFieldName: title
      tag_name:
        type: PersistedAliasMapper
        tableName: tx_news_domain_model_tag
        routeFieldName: title
      year:
        type: StaticRangeMapper
        start: '1970'
        end: '2099'
      month:
        type: StaticRangeMapper
        start: '01'
        end: '12'
      #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

Важные вещи:

  • Путь разбивки на страницы включает префикс страницы. Нет никакой двусмысленности в том, на какой странице он находится.
  • Нет конечных косых черт, кроме того, статьи также не могут иметь конечных косых черт в сегменте пути. Это можно сделать в базе данных и очистить кеш после
  • Нет значений по умолчанию
  • Различное сопоставление месяцев связано с требованием соответствия существующей системе

Мы обновлен с 9.5.15 до 9.5.18. Не ясно, требовалось ли это.

В пакет сайта включен шаблон TypoScript по умолчанию link.skipControllerAndAction = 1. Его необходимо удалить, чтобы отображать удобные URL-адреса статей в виде списка. (См. Как правильно установить url-routing для tx-news в TYPO3 9.5.5? )

Наконец, для работы фильтров даты, тегов и категорий отключите переопределение запроса в списке. -> Плагин-> Дополнительно необходимо снять галочку. overwrite demand

0 голосов
/ 28 мая 2020
Please check your code see below code of news_title

routeEnhancers: News: type: Расширение Extbase: Подключаемый модуль новостей: Pi1 routes: - routePath: '/ {news-title}' _controller: 'News :: detail' _arguments: news-title: news sizes: news -title: type: PersistedAliasMapper tableName: tx_news_domain_model_news routeFieldName: path_segment

Удалить фигурные скобки из path_segment, удалить, сделать это, как указано выше, или в документации спасибо

См. официальные документы https://docs.typo3.org/p/georgringer/news/7.2/en-us/AdministratorManual/BestPractice/Routing/Index.html

...