Du hast da jetzt unterschiedliche Möglichkeiten.
1) Wenn Du eine eigene Extension hast, dann könntest Du ein Plugin verwenden, um die Datensätze auszugeben. Dazu kannst Du im Controller mit dem QueryBuilder die Datensätze auslesen und an das Template übergeben.
https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/ContentElements/CreatePlugins.html
https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Database/QueryBuilder/Index.html
In diesem Fall würde ich aber eher dazu tendieren, die Entitäten auch über die Extension anzulegen und nicht mit der EXT:content_blocks. Aber das ist dann letztendlich Geschmackssache. Ist sicherlich etwas mehr Aufwand, da hier ja Modelle, TCA und SQL erstellt werden müssen.
2) Falls Du die Datensätze in einem Template einer Deiner Content-Blocks ausgeben möchtest, dann könntest Du im TypoScript ein CObj vom Typ RECORDS
anlegen und dann im Template mit dem ViewHelper f:cObject
ausgeben. Das ist eher dann sinnvoll, wenn Du die Datensätze im Backend anlegen willst und einfach alle Datensätze anzeigen möchtest. Komplexere SQL Abfragen sind über TypoScript nicht ganz trivial.
https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/ContentObjects/Records/Index.html
https://docs.typo3.org/other/typo3/view-helper-reference/main/en-us/Global/CObject.html
Eventuell kannst Du auch einen TypoScript DataProcessor verwenden. Weiss ich aber nicht genau, ob das auch klappt.
https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/DataProcessing/DatabaseQueryProcessor.html
3) Die eleganteste Lösung finde ich allerdings, anstelle eines eigenen RecordTypes
eine Collection
im Content-Block direkt zu verwenden.
https://docs.typo3.org/p/friendsoftypo3/content-blocks/1.1/en-us/YamlReference/FieldTypes/Collection/Index.html
Hier mal eine Beispiel Configuration für ein Content-Element:
EXT:my_extension/ContentBlocks/ContentElements/my-cool-content-block/config.yaml
name: myvendor/my-cool-content-block
typeName: myvendor_mycoolcontentblock
group: default
prefixFields: true
prefixType: full
fields:
- identifier: header
useExistingField: true
- identifier: my_cool_record_type
type: Collection
labelField: title
maxitems: 5
minitems: 0
appearance:
collapseAll: true
levelLinksPosition: top
fields:
- identifier: title
type: Text
- identifier: description
type: Text
Damit kannst Du jetzt in dem Content-Element inline
Datensätze anlegen und kannst dann direkt über das {data}
Objekt auf diese Datensätze zugreifen.
Das könnte bsp. so aussehen:
EXT:my_extension/ContentBlocks/ContentElements/my-cool-content-block/templates/frontend.html
<h1>{data.header}</h1>
<f:for each="{data.my_cool_record_type}" as="record">
<h2>{record.title}</h2>
<p>{record.description}</p>
</f:for>