使用TYPO3 9.5.8中的错字为tx_news生成口语URL

时间:2019-07-19 13:05:42

标签: typo3 typoscript typo3-9.x tx-news typo3-extensions

我将TYPO3 v 9.5.8与tx_news(7.2.0)一起使用。

我真的很喜欢新的TYPO3实现的语音网址生成。

我已经将其配置为生成口语URL,并且也对其进行配置以生成tx_news的口语URL,两者都工作正常。但我也想在页脚中显示最后三个新闻条目。

我的解决方案是在活字设置中生成它们,并将其传递给流体模板。我当前的排字代码如下:

    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>

我想输入如下网址:

<a href="/allgemeines/news/artikel/lorem-ipsum-dolor-sit">Lorem ipsum dolor sit</a>

这与tx_news列表视图的生成相同,用于重定向到详细信息视图。

有人知道这怎么可能吗?

2 个答案:

答案 0 :(得分:1)

我想您在生成TypoScript时缺少动作和控制器。

答案 1 :(得分:0)

有了Georg Ringer的the hint,我开始使用它了。

这是工作示例,以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