在 TYPO3 9.5.8 中使用拼写错误为 tx_news 生成说话 url
Generate speaking url for tx_news using typoscript in TYPO3 9.5.8
我将 TYPO3 v 9.5.8 与 tx_news
(7.2.0) 一起使用。
我真的很喜欢新的 TYPO3 实现说话 url 一代。
我已经将它配置为生成说话 urls 并将其配置为为 tx_news
生成说话 urls,两者都工作正常。但我还想在页脚中显示最后三个新闻条目。
我的解决方案是在 typoscript 设置中生成它们并将它们传递给流体模板。我当前的打字代码如下所示:
news = CONTENT
news {
table = tx_news_domain_model_news
select {
pidInList = 24
max = 3
orderBy = datetime DESC
}
renderObj = COA
renderObj {
1 = TEXT
1.field = datetime
1.strftime = %d. %B %Y
1.wrap = <p>|</p>
2 = TEXT
2 {
field = title
typolink {
parameter = 26
parameter.override.field = internalurl
useCacheHash = 0
additionalParams.wrap = &tx_news_pi1[news]=|
additionalParams.field = uid
}
}
}
renderObj.wrap = <div class="header-news-item">|</div>
}
至少这行得通。但是由于我使用 additionalParams.wrap
附加新闻条目的 id,生成的 url 看起来像这样:
<a href="/allgemeines/news/artikel?tx_news_pi1[news]=2&cHash=8b0067dc86ab1392bb84cbf58878e72d">Lorem ipsum dolor sit</a>
我想url看起来像这样:
<a href="/allgemeines/news/artikel/lorem-ipsum-dolor-sit">Lorem ipsum dolor sit</a>
这与 tx_news
为重定向到详细视图而生成的列表视图相同。
有人知道这是怎么可能的吗?
我猜你在生成 TypoScript 时缺少操作和控制器。
有了 Georg Ringer 的 ,我成功了。
这是工作示例,从 TypoScript 开始:
news = CONTENT
news {
table = tx_news_domain_model_news
select {
pidInList = 24 // Page ID of the page that contains the news entries.
max = 3
orderBy = datetime DESC
}
renderObj = COA
renderObj {
1 = TEXT
1.field = datetime
1.strftime = %d. %B %Y
1.wrap = <p>|</p>
2 = TEXT
2 {
field = title
typolink {
parameter = 26 // Page ID of the page that displays the detail view.
parameter.override.field = internalurl
useCacheHash = 0
additionalParams.wrap = &tx_news_pi1[action]=detail&tx_news_pi1[controller]=News&tx_news_pi1[news]=|
additionalParams.field = uid
}
}
}
renderObj.wrap = <div class="header-news-item">|</div>
}
当然,要使其正常工作,您还必须为 tx_news
启用语音 URL。从 TYPO3 9 LTS 开始,您可以通过将其添加到站点 yaml 配置文件来执行此操作:
routeEnhancers:
News:
type: Extbase
extension: News
plugin: Pi1
routes:
- routePath: '/{news-title}'
_controller: 'News::detail'
_arguments:
news-title: news
aspects:
news-title:
type: PersistedAliasMapper
tableName: tx_news_domain_model_news
routeFieldName: path_segment
这被描述为 here。
我将 TYPO3 v 9.5.8 与 tx_news
(7.2.0) 一起使用。
我真的很喜欢新的 TYPO3 实现说话 url 一代。
我已经将它配置为生成说话 urls 并将其配置为为 tx_news
生成说话 urls,两者都工作正常。但我还想在页脚中显示最后三个新闻条目。
我的解决方案是在 typoscript 设置中生成它们并将它们传递给流体模板。我当前的打字代码如下所示:
news = CONTENT
news {
table = tx_news_domain_model_news
select {
pidInList = 24
max = 3
orderBy = datetime DESC
}
renderObj = COA
renderObj {
1 = TEXT
1.field = datetime
1.strftime = %d. %B %Y
1.wrap = <p>|</p>
2 = TEXT
2 {
field = title
typolink {
parameter = 26
parameter.override.field = internalurl
useCacheHash = 0
additionalParams.wrap = &tx_news_pi1[news]=|
additionalParams.field = uid
}
}
}
renderObj.wrap = <div class="header-news-item">|</div>
}
至少这行得通。但是由于我使用 additionalParams.wrap
附加新闻条目的 id,生成的 url 看起来像这样:
<a href="/allgemeines/news/artikel?tx_news_pi1[news]=2&cHash=8b0067dc86ab1392bb84cbf58878e72d">Lorem ipsum dolor sit</a>
我想url看起来像这样:
<a href="/allgemeines/news/artikel/lorem-ipsum-dolor-sit">Lorem ipsum dolor sit</a>
这与 tx_news
为重定向到详细视图而生成的列表视图相同。
有人知道这是怎么可能的吗?
我猜你在生成 TypoScript 时缺少操作和控制器。
有了 Georg Ringer 的
这是工作示例,从 TypoScript 开始:
news = CONTENT
news {
table = tx_news_domain_model_news
select {
pidInList = 24 // Page ID of the page that contains the news entries.
max = 3
orderBy = datetime DESC
}
renderObj = COA
renderObj {
1 = TEXT
1.field = datetime
1.strftime = %d. %B %Y
1.wrap = <p>|</p>
2 = TEXT
2 {
field = title
typolink {
parameter = 26 // Page ID of the page that displays the detail view.
parameter.override.field = internalurl
useCacheHash = 0
additionalParams.wrap = &tx_news_pi1[action]=detail&tx_news_pi1[controller]=News&tx_news_pi1[news]=|
additionalParams.field = uid
}
}
}
renderObj.wrap = <div class="header-news-item">|</div>
}
当然,要使其正常工作,您还必须为 tx_news
启用语音 URL。从 TYPO3 9 LTS 开始,您可以通过将其添加到站点 yaml 配置文件来执行此操作:
routeEnhancers:
News:
type: Extbase
extension: News
plugin: Pi1
routes:
- routePath: '/{news-title}'
_controller: 'News::detail'
_arguments:
news-title: news
aspects:
news-title:
type: PersistedAliasMapper
tableName: tx_news_domain_model_news
routeFieldName: path_segment
这被描述为 here。