Kurz zum Vergleich der "Standard"-Weg
Also mit Datensätzen, die aus einer eigenen TYPO3 Extension stammen (Domain Model Records) habe ich vor einer Weile erfolgreich (in leicht angepasster Form) den RecordsXmlSitemapDataProvider verwendet.
Hierbei waren zusätzlich die folgenden Sitemap-relevanten Felder in der Tabelle erforderlich (falls nicht sowieso schon vorhanden):
config.lastModifiedField
(z.B. tstamp
)
config.changeFreqField
(z.B. sitemap_changefreq
) und
config.priorityField
(z.B. sitemap_priority
)
Außerdem erfordert dieser Provider eine Angabe von
config.pid
, um zu wissen, in welchem Record Storage die Datensätze liegen.
config.url.pageId
also die ID der Seite, für welche die URL des jeweiligen Datensatzes gebildet werden soll
config.url.fieldToParameterMap.uid
mit dem URL-Parameter, der die ID des jeweiligen Datensatzes liefert und unter
config.url.additionalGetParameters
die Paramter-Angaben für Controller und Action.
In meinem Fall war es so, dass ich die ID der Zielseite nicht statisch im TypoScript bestimmte hatte, sondern aus einem eigenen Feld des assoziierten Kategorie-Datensatzes bezogen hatte. Diesen Fall hatte ich dann noch mit ein paar Anpassungen in einer eigenen Kopie des RecordsXmlSitemapDataProvider
berücksichtigt (Wenn dazu auch Interesse besteht gerne melden).
Soviel zur standardmäßigen Ausgabe von XML Sitemaps mit TYPO3-Datensätzen. 😉
Kommen wir nun zu deiner eigentlichen Frage
Ich hänge irgendwie immernoch an der Interpretation deiner Aussage:
"einem Projekt, das eine Extention hat, die Datei aus einer externen Datenbank liefert und keine TYPO3-Einträge hat"
Wie ist das genau zu verstehen? Werden hier tatsächlich die Daten in Echtzeit beim Aufruf der Seite von der externen Datenbank bezogen? Falls ja solltet ihr euch darüber Gedanken machen, ob das aus Sicht der Performance tragbar ist. So machst du dich ja zusätzlich abhängig von der Ladezeit des externen Systems, oder was ist, wenn es dort mal einen Ausfall gibt, dann würde sich dieser direkt auch auf die TYPO3 Site durchziehen.
Ich kenne das demgegenüber eher so, dass man den Datenstand auf Seiten TYPO3 mit dem des externen Systems synchron hält (z.B. über einen Symfony Command der per Cronjob ausgeführt wird) und innerhalb von TYPO3 dann mit "eigenen" Datensätzen arbeiten kann. Das hat zusätzlich den Vorteil, dass du von den Standard-Caching-Mechanismen profitierst. Außerdem bewegt sich dann wieder alles im klassischen Domain Model Konstrukt welches TYPO3 standardmäßig verarbeiten kann, auch hinsichtlich der gewünschten Sitemap.
Mich würde außerdem mal die YAML-Konfiguration interessieren. Aus welchen Parametern/Feldern bildet ihr die lesbaren Pfade?