Christian Ziemer
Datenstrukturen
Für diesen Use-Case eignet sich mittlerweile die Content-Blocks Extension hervorragend.
Diese wird aktuell maßgeblich vom Entwickler der Mask-Extension Nikita Hovratov fortentwickelt und hat Mask quasi abgelöst. Weite Bestandteile der Content-Blocks sind bereits in den TYPO3 v13 Core aufgenommen worden. Es wurde also sehr nahe am Core bzw. im Einklang mit dem Core entwickelt, was dir auch Zukunftssicherheit bei der Nutzung der Content-Blocks gibt.
Ein eigener Record lässt sich mit dieser Extension ganz einfach per Konsolenbefehl erzeugen und in deinem eigenen Sitepackage hinterlegen.
Beispiel:
typo3 content-blocks:create
Choose the Content Type of your Content Block [Content Element]:
[content-element] Content Element
[page-type ] Page Type
[record-type ] Record Type
> record-type
Define vendor (vendor-name/content-block-name) [erhaweb]:
> erhaweb
Define name (erhaweb/content-block-name):
> my-custom-record
Define title [erhaweb/my-custom-record]:
> My custom record
Choose an extension in which the Content Block should be stored:
[sitepackage ] Sitepackage
> sitepackage
Successfully created new Content Block "erhaweb/my-custom-record" inside sitepackage.
Please run the following commands every time you change the config.yaml file.
Alternatively, flush the system cache in the backend and run the Database Analyzer.
vendor/bin/typo3 cache:flush -g system
vendor/bin/typo3 extension:setup --extension=sitepackage
Anschließend bist du über die Datei EXT:sitepackage/ContentBlocks/RecordTypes/my-custom-record/config.yaml
in der Lage beliebige eigene Felder zu definieren. Siehe dir dazu mal die Doku an.
Frontend-Ausgabe per Listen-/Detailansicht
Wie du darauf aufbauend die Frontend-Ausgabe regelst, ist am Ende Geschmackssache. Es gibt viele Wege.
Die Extension "Just News" gibt ein schönes Beispiel wie man so etwas ausschließlich mit TypoScript und DatabaseQueryProcessor
umsetzen kann. Auf dieser Basis habe ich auch mal eine Mini-Extension "Ticker Messages" mit eigenen Records zu Demonstrationszwecken gebaut.
https://github.com/ErHaWeb/ticker_messages
Alternativ dazu kannst du natürlich auch den klassichen Extbase-Weg gehen, und ein eigenes Domain-Model mit Repository für deinen Record-Type erzeugen, welches dann per Controller in einer Listen- und Detailansicht (wie bei der News-Extension) ausgegeben werden kann.
Sicherlich ließe sich auch ein Controller bauen, der ohne Extbase-Klassen mit eigenen Doctrine DBAL Queries die Daten für Listen- und Detailansicht ermittelt. Im einfachsten Fall, erfolgt die Ausgabe per UserFunc
. Stefan Frömken hat hierzu eine Reihe guter Grundlagen-Tutorials auf YouTube veröffentlicht. Das Thema UserFunc
wird hier erklärt:
https://www.youtube.com/watch?v=8ppgwr1dyWA