0

在我的 TYPO3 9 安装中,我正在为我自己的扩展(事件)处理自定义 sitemap.xml。在那里,我希望每个条目都有一个单独的 pageId / 详细信息页面。

正如我在 tx_seo 的配置部分所了解的那样,我只能提供一个特定的 pageId 作为详细信息页面 ID - 对吗?

我试过这个配置:

plugin.tx_seo {
    config {
        xmlSitemap {
            sitemaps {
               veranstaltung {
                  provider = TYPO3\CMS\Seo\XmlSitemap\RecordsXmlSitemapDataProvider
                  config {
                     table = tx_ntevents_domain_model_veranstaltung
                     sortField = kursnummer
                     lastModifiedField = tstamp
                     recursive = 1
                     pid = 110
                     url {
                        pageId = # here different pages which can be found in tx_ntevents_domain_model_veranstaltung.seite1 #
                        fieldToParameterMap {
                          uid = nt_events_pi1[veranstaltung] # is this correct? #
                        }
                        additionalGetParameters {
                          nt_events_pi1.controller = Veranstaltung
                          nt_events_pi1.action = show
                        }
                    }
              ...

使用此设置 tx_seo 会找到所有条目,但不会

  • 为每个条目提供一个特定的页面 ID 和
  • 不会生成漂亮的 slug url

这是来自 config.yaml 的 slug 代码

  NtEvents:
    type: Extbase
    extension: NtEvents
    plugin: Events
    routes:
      -
        routePath: '/{veranstaltung-url}'
        _controller: 'Veranstaltung::show'
        _arguments:
          veranstaltung-url: veranstaltung
    defaultController: 'Veranstaltung::list'
    aspects:
      veranstaltung-url:
        type: PersistedAliasMapper
        tableName: tx_ntevents_domain_model_veranstaltung
        routeFieldName: slug
        routeValuePrefix: /
4

1 回答 1

0

您可以创建自己的 DataProvider,在您的情况下,将原始“\TYPO3\CMS\Seo\XmlSitemap\RecordsXmlSitemapDataProvider”复制到您自己的扩展中并根据您的意愿重写或相应地调整它可能是最简单的。

于 2021-02-16T14:04:11.387 回答