TYPO3 新闻路由有效但哈希和其他 URL 部分仍然可见
TYPO3 News Routing working but still Hash and other URL parts visible
我在 TYPO3 9.5 中遇到路由和 tx_news 问题。官方的例子都试过了,问题依旧,找不到原因。
我想 URL 喜欢:
...home/news/detail/project-lounge-movetia-2
但我得到:
...home/news/detail/project-lounge-movetia-2?tx_news_pi1[day]=11&tx_news_pi1[month]=12&tx_news_pi1[year]=2019&cHash=8fd7057d32ae3e3810b76f0bf4a06e39
标准配置:
routeEnhancers:
News:
type: Extbase
limitToPages:
- 40
- 54
- 55
extension: News
plugin: Pi1
routes:
- routePath: '/'
_controller: 'News::list'
- routePath: '/page-{page}'
_controller: 'News::list'
_arguments:
page: '@widget_0/currentPage'
- routePath: '/{news-title}'
_controller: 'News::detail'
_arguments:
news-title: news
- routePath: '/{category-name}'
_controller: 'News::list'
_arguments:
category-name: overwriteDemand/categories
- routePath: '/{tag-name}'
_controller: 'News::list'
_arguments:
tag-name: overwriteDemand/tags
defaultController: 'News::list'
defaults:
page: '40'
aspects:
news-title:
type: PersistedAliasMapper
tableName: tx_news_domain_model_news
routeFieldName: path_segment
page:
type: StaticRangeMapper
start: '1'
end: '100'
category-name:
type: PersistedAliasMapper
tableName: sys_category
routeFieldName: slug
tag-name:
type: PersistedAliasMapper
tableName: tx_news_domain_model_tag
routeFieldName: slug
requirements:
page: '\d+'
新闻标题得到正确的“增强”,但其余部分仍然存在(哈希、ID 等)我不知道为什么会这样。我读了很多关于路由的手册,但我不明白。 :(
它应该包含更多内容,如他们的文档中所示
routeEnhancers:
News:
type: Extbase
limitToPages:
- 104
extension: News
plugin: Pi1
routes:
- routePath: '/'
_controller: 'News::list'
- routePath: '/page-{page}'
_controller: 'News::list'
_arguments:
page: '@widget_0/currentPage'
- routePath: '/{news-title}'
_controller: 'News::detail'
_arguments:
news-title: news
- routePath: '/{category-name}'
_controller: 'News::list'
_arguments:
category-name: overwriteDemand/categories
- routePath: '/{tag-name}'
_controller: 'News::list'
_arguments:
tag-name: overwriteDemand/tags
defaultController: 'News::list'
defaults:
page: '0'
aspects:
news-title:
type: PersistedAliasMapper
tableName: tx_news_domain_model_news
routeFieldName: path_segment
page:
type: StaticRangeMapper
start: '1'
end: '100'
category-name:
type: PersistedAliasMapper
tableName: sys_category
routeFieldName: slug
tag-name:
type: PersistedAliasMapper
tableName: tx_news_domain_model_tag
routeFieldName: slug
不需要的参数
实际上 &tx_news_pi1[day]=20&tx_news_pi1[month]=7
之类的日期参数 不是 默认值,这意味着您复制了一些 TS 片段,其中包括它或者您的一些同事可能会放它在那里。
根据 News' Humane readable dates documentation 在您的 TypoScript 中搜索 plugin.tx_news.settings.link.hrDate
节点并修改或删除它以摆脱单视图链接中的 date 参数。
最后,如果您想保留它们,但要使用人类可读的 URL,请查看 newest documentation of the ext:news,其中有一个示例,用于通过方面进行适当的日期路由。
我找到了解决办法。问题不在于路由,而是原始新闻 URL 包含所有附加参数 {day}{month}{year}。以下 SETUP 设置关闭此功能:
plugin.tx_news.settings.link.hrDate = 0
通过禁用它,生成的原始 URl 看起来像这样:
?tx_news_pi1[action]=detail&tx_news_pi1[controller]=News&tx_news_pi1[news]=486&cHash=
现在可以完美运行了。
感谢 biesior 推动我找到解决方案!
我在 TYPO3 9.5 中遇到路由和 tx_news 问题。官方的例子都试过了,问题依旧,找不到原因。
我想 URL 喜欢:
...home/news/detail/project-lounge-movetia-2
但我得到:
...home/news/detail/project-lounge-movetia-2?tx_news_pi1[day]=11&tx_news_pi1[month]=12&tx_news_pi1[year]=2019&cHash=8fd7057d32ae3e3810b76f0bf4a06e39
标准配置:
routeEnhancers:
News:
type: Extbase
limitToPages:
- 40
- 54
- 55
extension: News
plugin: Pi1
routes:
- routePath: '/'
_controller: 'News::list'
- routePath: '/page-{page}'
_controller: 'News::list'
_arguments:
page: '@widget_0/currentPage'
- routePath: '/{news-title}'
_controller: 'News::detail'
_arguments:
news-title: news
- routePath: '/{category-name}'
_controller: 'News::list'
_arguments:
category-name: overwriteDemand/categories
- routePath: '/{tag-name}'
_controller: 'News::list'
_arguments:
tag-name: overwriteDemand/tags
defaultController: 'News::list'
defaults:
page: '40'
aspects:
news-title:
type: PersistedAliasMapper
tableName: tx_news_domain_model_news
routeFieldName: path_segment
page:
type: StaticRangeMapper
start: '1'
end: '100'
category-name:
type: PersistedAliasMapper
tableName: sys_category
routeFieldName: slug
tag-name:
type: PersistedAliasMapper
tableName: tx_news_domain_model_tag
routeFieldName: slug
requirements:
page: '\d+'
新闻标题得到正确的“增强”,但其余部分仍然存在(哈希、ID 等)我不知道为什么会这样。我读了很多关于路由的手册,但我不明白。 :(
它应该包含更多内容,如他们的文档中所示
routeEnhancers:
News:
type: Extbase
limitToPages:
- 104
extension: News
plugin: Pi1
routes:
- routePath: '/'
_controller: 'News::list'
- routePath: '/page-{page}'
_controller: 'News::list'
_arguments:
page: '@widget_0/currentPage'
- routePath: '/{news-title}'
_controller: 'News::detail'
_arguments:
news-title: news
- routePath: '/{category-name}'
_controller: 'News::list'
_arguments:
category-name: overwriteDemand/categories
- routePath: '/{tag-name}'
_controller: 'News::list'
_arguments:
tag-name: overwriteDemand/tags
defaultController: 'News::list'
defaults:
page: '0'
aspects:
news-title:
type: PersistedAliasMapper
tableName: tx_news_domain_model_news
routeFieldName: path_segment
page:
type: StaticRangeMapper
start: '1'
end: '100'
category-name:
type: PersistedAliasMapper
tableName: sys_category
routeFieldName: slug
tag-name:
type: PersistedAliasMapper
tableName: tx_news_domain_model_tag
routeFieldName: slug
不需要的参数
实际上 &tx_news_pi1[day]=20&tx_news_pi1[month]=7
之类的日期参数 不是 默认值,这意味着您复制了一些 TS 片段,其中包括它或者您的一些同事可能会放它在那里。
根据 News' Humane readable dates documentation 在您的 TypoScript 中搜索 plugin.tx_news.settings.link.hrDate
节点并修改或删除它以摆脱单视图链接中的 date 参数。
最后,如果您想保留它们,但要使用人类可读的 URL,请查看 newest documentation of the ext:news,其中有一个示例,用于通过方面进行适当的日期路由。
我找到了解决办法。问题不在于路由,而是原始新闻 URL 包含所有附加参数 {day}{month}{year}。以下 SETUP 设置关闭此功能:
plugin.tx_news.settings.link.hrDate = 0
通过禁用它,生成的原始 URl 看起来像这样: ?tx_news_pi1[action]=detail&tx_news_pi1[controller]=News&tx_news_pi1[news]=486&cHash=
现在可以完美运行了。 感谢 biesior 推动我找到解决方案!