TYPO3-Sites scheitern selten am Design – sie scheitern am OpenImmo-Importer, der den nächsten LTS-Sprung nicht überlebt. ImmoWebport hält den Feed außerhalb der Extension-Liste.
Wohnungsunternehmen, Multi-Site und LTS sind der Alltag – nicht das Installieren einer App.
TYPO3 ist das Enterprise-CMS im deutschsprachigen Raum: Site Packages, Fluid, Workspaces, mehrere Root-Pages, harte LTS-Zyklen. Typische Betreiber sind Wohnungsunternehmen, kommunale Gesellschaften, größere Maklerhäuser und Konzerne – umgesetzt von einer Agentur, nicht vom Praktikanten im Plugin-Verzeichnis.
OpenImmo landet in dieser Welt als Composer-Extension plus Scheduler oder als Eigenentwicklung. Beides hängt am PHP-Stand, am ExtBase-Stand und am Maintainer. Genau das ist der TYPO3-Problemraum – nicht ein fehlender Baukasten-Button.
Die richtige Frage lautet: Willst du Immobilien als TYPO3-Records pflegen – oder willst du den Feed überleben lassen, wenn die Site auf die nächste LTS geht?
OpenImmo ist das XML-Format aus der Maklersoftware. TYPO3 importiert es nicht von allein. Ob Scheduler, eigene Pipeline oder Widget: Die Quelle bleibt onOffice, Flowfact, Propstack oder ein anderes OpenImmo-CRM.
Schnittstelle, Sync-Intervall und CRM-Liste stehen auf der OpenImmo-Hubseite. Hier geht es nur um den TYPO3-Weg.
Der vierte Weg steht nicht in der Extension-Liste: das Widget.
Die bekannteste TYPO3-OpenImmo-Erweiterung: Import per Scheduler ins fileadmin, ExtBase/Fluid, Listen- und Detailansicht, Anfrageformular. Basis und PRO jeweils als Paket – Objekte landen als TYPO3-Records.
Die Agentur schreibt Importer, Models und Plugins selbst – oft nach einem LTS-Sprung, wenn die alte TER-Extension nicht mehr gepflegt wird. Maximale Kontrolle, dauerhafte Verantwortung.
Viele OpenImmo-Extensions liefen unter TYPO3 v10/v11. Nach dem Sprung auf v12/v13 fehlt der Maintainer. Die Website steht, der Import nicht – genau dann wird oft neu gebaut.
ImmoWebport hängt zwischen CRM und Site Package. OpenImmo kommt nie in die TYPO3-Datenbank. Der Integrator setzt ein Div und ein Script – analog zu Matomo oder einem Consent-Tool, nicht analog zu einer ExtBase-Immobilienwelt.
Nicht „besser als WordPress-Plugins“ – sondern weniger LTS-Risiko als eine OpenImmo-Extension
TYPO3-Upgrades kippen Extensions. Ein externes Widget muss nicht auf ExtBase 13, Site Sets oder den neuen RTE portiert werden.
Der klassische TYPO3-Weg legt ZIPs nach fileadmin/user_upload/… und hofft auf den Cron. ImmoWebport holt OpenImmo in der Cloud – TYPO3 rendert nur die Seite.
Die Agentur pflegt Site Package, Zugriffe und Cache. OpenImmo-Mapping, Medien und CRM-Eigenheiten bleiben bei ImmoWebport und dem Makler-CRM.
onOffice, Flowfact, Propstack oder ein anderer OpenImmo-Export: einmal anbinden. Dieselbe Datenbasis kann parallel auf einer Kampagnenseite liegen.
Extension, Eigenbau, verwaister TER-Stand – kein Landingpage-Baukasten
Das CRM exportiert OpenImmo, ImmoWebport synchronisiert, TYPO3 bettet nur den Anzeige-Code ein – im HTML-Content-Element oder im Site Package. Kein Scheduler, kein fileadmin-Importordner, keine Extension, die beim nächsten LTS-Sprung migriert werden muss.
Typ: Kommerzielle Extension
Die bekannteste TYPO3-OpenImmo-Erweiterung: Import per Scheduler ins fileadmin, ExtBase/Fluid, Listen- und Detailansicht, Anfrageformular. Basis und PRO jeweils als Paket – Objekte landen als TYPO3-Records.
Aufwand: Mittel bis hoch · Preis: Ab ca. 600€ plus Integrator
Extension-SeiteTyp: Integrator-Eigenentwicklung
Die Agentur schreibt Importer, Models und Plugins selbst – oft nach einem LTS-Sprung, wenn die alte TER-Extension nicht mehr gepflegt wird. Maximale Kontrolle, dauerhafte Verantwortung.
Aufwand: Sehr hoch · Preis: Ab ca. 5.000–15.000€
Typ: Altes Plugin nach Upgrade
Viele OpenImmo-Extensions liefen unter TYPO3 v10/v11. Nach dem Sprung auf v12/v13 fehlt der Maintainer. Die Website steht, der Import nicht – genau dann wird oft neu gebaut.
Aufwand: Hoch (Notfall) · Preis: Upgrade-Projekt
| Weg | Live-Sync | Überlebt LTS | TYPO3-Records | Aufwand | Preis |
|---|---|---|---|---|---|
| ImmoWebportEmpfohlen | Niedrig | Ab 39€/Monat | |||
| coding.ms OpenImmo (TYPO3-Extension) | Mittel bis hoch | Ab ca. 600€ plus Integrator | |||
| Eigene ExtBase-Pipeline | Sehr hoch | Ab ca. 5.000–15.000€ | |||
| Verwaiste TER-Extension | Hoch (Notfall) | Upgrade-Projekt |
Nicht Kampagnen-Onepager – sondern Instanz, LTS und Bestandshalter
Genau diese Organisationen sitzen oft auf TYPO3 – nicht auf einem Baukasten. Der Bestand kommt aus der Bestandssoftware per OpenImmo, die Konzernseite bleibt das Site Package der Agentur.
TYPO3 verwaltet mehrere Root-Pages. Jede Site bekommt das Widget in ihrem Template – der CRM-Feed bleibt einer. Kein zweiter Scheduler-Task pro Mandant.
Language Overlays bleiben Sache von TYPO3. Objekte kommen mehrsprachig aus dem CRM bzw. dem Widget, ohne dass Redakteure XML in Übersetzungsworkflows ziehen.
Die Site wandert auf v12 oder v13, die OpenImmo-Extension nicht. Statt einer neuen ExtBase-Pipeline hängt das Widget im HTML-Element oder im Fluid-Partial – der Relaunch betrifft das CMS, nicht den Objektfeed.
Anderer Problemraum: WordPress-Plugins · Onepage-Landingpages. Widget-Typen: Liste, Raster, Suche, Wertermittlung.
Plain HTML oder Site Package – kein fileadmin-ZIP, kein Scheduler
Im CRM den Export aktivieren (Setup-Assistent für Flowfact, onOffice, Propstack oder FTP). Die Objekte liegen danach in ImmoWebport – nicht als tt_content und nicht im fileadmin.
Liste, Raster, Suche oder Wertermittlung wählen. Container-Div und Script-Tag merken – das ist alles, was TYPO3 je zu sehen bekommt.
Auf der Zielseite ein Element „Plain HTML“ / unfiltered HTML anlegen. Der Standard-RTE (CKEditor) entfernt sonst das Script. Alternativ das Snippet nicht als Inhalt, sondern im Site Package ausgeben.
Sauberer für Integratoren: Partial im Page-Template oder page.includeJSFooter plus ein leeres Container-Div. Dann überlebt das Widget jeden Redakteurs-Klick im RTE.
TYPO3 12+ kann externe Scripts per Content-Security-Policy blockieren. page.includeJSFooter muss die Widget-Domain erlauben. Seiten-Cache ist unkritisch – das Widget lädt die Objekte clientseitig.
Für Integratoren ist das Site Package der richtige Ort: Container im Fluid-Layout, Script über page.includeJSFooter. Redakteure sollen das Snippet nicht im RTE anfassen müssen.
Aktuelle Objekte aus dem CRM: Liste, Filter und Detailansicht mit Galerie und Anfrage. Der Integrator bleibt bei Fluid und Site Package – der Feed hängt nicht an der nächsten LTS.
Wer jedes Exposé zusätzlich als eigenen TYPO3-Datensatz braucht, bleibt bei einer Import-Extension. Beides parallel erzeugt zwei Bestände.
RTE, CSP, Fluid – nicht Cookie-Banner einer Landingpage
HTML-Content-Elemente laufen oft durch den RTE. Script und teilweise das Container-Div verschwinden beim Speichern – die Seite bleibt leer.
Lösung: Plain-HTML-Element ohne Transformation nutzen oder das Snippet fest im Site Package verdrahten, nicht im Flexiblen Inhalt.
Site-Konfiguration und Middleware schicken ein striktes CSP. app.immowebport.de als Script-Quelle fehlt – Browser blockiert das Widget, TYPO3 selbst zeigt keinen Fehler.
Lösung: Widget-Host in der CSP-Konfiguration der Site erlauben und in einem frischen Browser ohne Cache prüfen.
Wer das Snippet als Variable ins Fluid-Template gibt, bekommt HTML-Entities statt eines lebenden Scripts.
Lösung: f:format.raw nur bewusst einsetzen oder das Script über TypoScript page.includeJSFooter laden, den Container separat im Markup lassen.
Das Element landet in einer schmalen colPos oder hinter einem Accordion-Content-Element. Auf Desktop sieht man eine Scheibe, mobil gar nichts.
Lösung: Eigene Spalte oder vollbreite Section im Backend-Layout; Mobile-Vorschau der TYPO3-Site, nicht nur das Backend.
Wer von einer Extension kommt, legt weiter ZIPs ins fileadmin und wartet auf den Task. Beim Widget-Weg passiert dort nichts – und muss es auch nicht.
Lösung: Importordner und Scheduler-Tasks der alten Extension deaktivieren, sobald ImmoWebport den Feed übernimmt. Sonst entstehen zwei Wahrheiten.
Richte ImmoWebport kostenlos ein, verbinde das CRM und lass den Integrator das Widget ins Site Package setzen. Du zahlst erst, wenn die Seite live geht.