Для страниц с подробностями записей tx_news, а также расширения календаря, которое я написал сам, я хочу, чтобы дата записи в URL существовала до тех пор, пока она не была установлена до TYPO3 8LTS с расширением realURL: /path-to/my-page/yyyy/mm/dd/extension-record-path-segment/
.Мне удалось создать ссылку , но с прикрепленным cHash .
Мои настройки routeEnhancers для tx_news_pi1 в /typo3conf/sites/my-site/config.yaml
следующие:
routeEnhancers:
NewsPlugin:
type: Extbase
limitToPages: [7]
extension: News
plugin: Pi1
routes:
- { routePath: '/{year}/{month}/{day}/{news}', _controller: 'News::detail' }
defaultController: 'News::detail'
requirements:
year: '^20[0-9]{2}$'
month: '^[01][0-9]$'
day: '^[0-3][0-9]$'
aspects:
news:
type: PersistedAliasMapper
tableName: 'tx_news_domain_model_news'
routeFieldName: 'path_segment'
Я добавилраздел requirements
с довольно строгими регулярными выражениями, потому что в описании в журнале изменений T3 при необходимости упоминается об этом, чтобы избежать cHash.
Я также пытался использовать StaticRangeMappers
в aspects
раздел для года, месяца и дня (, как описано в этом ответе ), но в результате PersistedAliasMapper
игнорируется и вместо него отображается UID записи новостей.Или иногда даже в исключении TYPO3 (1/1) # 1537696772 OverflowException: возможный диапазон всех картографов превышает 10000 элементов (так было даже при удалении их на месяц и день и установкедиапазон для года - только 2016–2019 гг.).
year:
type: StaticRangeMapper
start: '2016'
end: '2100'
month:
type: StaticRangeMapper
start: '01'
end: '12'
day:
type: StaticRangeMapper
start: '01'
end: '31'
event:
type: PersistedAliasMapper
tableName: 'tx_thesimplecal_domain_model_events'
routeFieldName: 'path_segment'
РЕДАКТИРОВАТЬ: Я обновил этот пост, чтобы он был короче, поскольку волшебным образом исчезли некоторые из первоначально упомянутых ошибок.