Search by

werkraum / ausstello

lukasniestroj

Events managen und kommunizieren, Marketing automatisieren. Einfach, ausstello.

Package info

github.com/werkraum/ausstello

Homepage

Type:typo3-cms-extension

pkg:composer/werkraum/ausstello

Statistics

Installs: 894

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

2.0.0 2026-09-30 09:51 UTC

README

Termine aus ausstello auf der eigenen TYPO3-Seite: Liste mit Filtern, Teaser und Detailansicht. Gerendert wird im ausstello-Backend; die Extension holt je Seitenaufruf das fertige HTML samt SEO-Daten und trägt Titel, Canonical, Meta-Tags, JSON-LD und die Assets in die Seite ein.

Voraussetzungen

TYPO3 12.4 oder 13.4, PHP 8.2 bis 8.4. Getestet (Unit- und Browser-Tests) ist diese Version mit TYPO3 13.4. TYPO3 12.4 wird unterstützt, ist in diesem Release aber nur statisch geprüft (kein Laufzeittest). Unter 12.4 übernimmt EXT:seo page selbst in den Canonical – unverändert, also auch auf gefilterten Seiten und bei page=1.

Installation

composer req werkraum/ausstello
vendor/bin/typo3 extension:setup

TypoScript-Vorlagen „ausstello - Default Template“ und (mit EXT:seo) „ausstello - Seo“ im Root-Template einbinden. Routing in der Site-Konfiguration:

imports:
  - resource: 'EXT:ausstello/Configuration/Routing/Ausstello.yaml'

Empfohlen: den Enhancer auf die Seiten mit Plugin „Event“ oder „Detail“ begrenzen (Werte nach dem Import überschreiben den importierten Enhancer):

imports:
  - resource: 'EXT:ausstello/Configuration/Routing/Ausstello.yaml'
routeEnhancers:
  Ausstello:
    limitToPages: [12, 13]

Ohne limitToPages greift der Enhancer auf jeder Seite. Eine Detailadresse unter einer Seite ohne Plugin „Event“ oder „Detail“ (z. B. /impressum/irgendwas) beantwortet die Extension dann selbst mit einem 404, bevor TYPO3 die Seite rendert oder cacht. Geprüft werden nur Inhaltselemente direkt auf der Seite; ein Plugin, das nur über „Datensatz einfügen“ oder vererbte Inhalte eingebunden ist, zählt nicht – dann limitToPages setzen oder das Plugin direkt einfügen.

extension:setup legt die Cache-Tabelle der Extension an. Nach jedem Update ausführen, sonst fehlt sie (neu in 2.0).

Einstellungen

Admin Tools → Settings → Extension Configuration → ausstello:

  • backendUrl – Adresse des ausstello-Backends, z. B. https://mein.ausstello.de
  • timeout – Zeitlimit je Abruf in Sekunden (Vorgabe 3)
  • cacheMaxLifetime – höchstens so lange wird eine Antwort gehalten (Vorgabe 300)

Im ausstello-Backend unter Veröffentlichung → Integration müssen Domain, Listen-URL und Detail-Präfix genau zur TYPO3-Seite passen: Das Detail-Präfix ist der Pfad der Seite mit dem Detail-Plugin (z. B. /veranstaltungen/detail/). Alle Links, Canonicals und die Sitemap baut das Backend aus diesen Werten.

Auswirkungen auf die ganze Seite

Besucherparameter filter[...] und page gehen unverändert ans Backend. Damit die Listen-URLs cachebar bleiben, gilt:

  • page ist global vom cHash ausgenommen (nicht nur für ausstello-Seiten). Eine andere Extension, die auf derselben Site einen gecachten ?page=-Parameter mit cHash-Schutz nutzt, verliert diesen Schutz. Vorausgesetzt wird, dass die Plugins als USER_INT laufen.
  • Für page ab 2 legt TYPO3 einen eigenen Seitencache-Eintrag je Seitennummer an (begrenzt auf 10000), weil der Canonical im gecachten Kopf steht. Auf Seiten mit beliebigem ?page=N entsteht so ein Canonical mit page=N.
  • Filter-URLs sind noindex und verweisen per Canonical auf die ungefilterte Liste.

Datenschutz und CSP

Besucher laden Stylesheets, Skripte und Bilder direkt vom ausstello-Backend. Die Extension ergänzt die Content-Security-Policy um diesen Host (script-src, style-src, img-src, font-src und connect-src – über Letzteres schickt die Anmelde-Komponente im Detail Anmeldungen ans Backend). Die Einbindung gehört in die Datenschutzerklärung.

Umstieg von 1.x

Nach dem Update extension:setup ausführen und Caches leeren. Inhaltselemente und FlexForm-Werte bleiben gültig, ohne Upgrade-Wizard. Entfallen: API-Token, remoteAssets*-Konstanten, eigene Fluid-Templates (Overrides greifen nicht mehr), der Aspect StaticEventMapper (Site-Konfiguration auf Ausstello.yaml umstellen). Detailadressen folgen jetzt dem Detail-Präfix aus dem Backend. Ohne FlexForm-Wert zeigt eine Liste weiter 10 Termine je Seite.

Entwicklung

Testinstanz: printf 'y\n' | ddev start im Extension-Verzeichnis (DDEV fragt wegen des verschachtelten Projekts nach; das laufende ausstello-Backend-DDEV ausstello.de wird vorausgesetzt), danach ddev seed. Backend-Login der Testinstanz: werkraum / Werkraum123!. Unit-Tests: ddev exec -d /var/www/html/.instance vendor/bin/phpunit. Browser-Tests: npm --prefix .instance/e2e test; Screenshot-Vergleich mit der Baseline aus 1.3.2: npm --prefix .instance/e2e run compare.