# Willkommen

Dokumentation - EstateManager for Contao CMS

![](/files/zc2IWZU3xGFGOtDwekkn)

Willkommen in der Dokumentation für den **Contao EstateManager** *(folgend EstateManager)*, ein Projekt zur Umsetzung von Makler-Websites für kleine, mittelständige und große Immobilien-Webseiten, bis hin zu ganzen Immobilien-Portalen.

**Sprachen:**

* [Deutsch](/installation-konfiguration/installation)

{% hint style="info" %}
Diese Dokumentation lebt vom Mitwirken der Community. Bitte haben Sie Verständnis, dass das Projekt als Open-Source-Initiative nicht in allen Bereichen vollständig dokumentiert ist. Bei Fragen rund um den EstateManager stehen wir Ihnen gerne jederzeit zur Verfügung – [kontaktieren Sie uns](https://www.oveleon.de/kontakt.html#article-11).
{% endhint %}

{% hint style="info" %}
Der Support für Contao 5.\* wird für den Contao EstateManager bereitgestellt, sobald das [Finanzierungsziel](https://www.contao-estatemanager.com/de/#fundraising) erreicht ist.

Bitte beachten Sie, dass Erweiterungen für die neue Major-Version erneut erworben werden müssen und künftig nicht mehr als Open Source verfügbar sind.

Die Importfunktion für Immobilien wurde aus dem Core entfernt und wird künftig als Teil eines kostenpflichtigen Subscriptions-Modells angeboten.

Für die folgenden Erweiterungen wird es aufgrund geringer Nachfrage keine Nachfolger geben. Sollten Sie dennoch eine Kompatibilität mit Contao 5 wünschen, können Sie uns gerne [mit der Umsetzung beauftragen](https://www.oveleon.de/kontakt.html#kontaktformular):

* WIB-Import
* Käufer-/Mieterfinder
* onOffice API Import
* Datei-Download
  {% endhint %}


# Über das Projekt

Dokumentation - EstateManager for Contao CMS

### Was ist der EstateManager?

Der EstateManager ist ein Produkt von [Oveleon](https://www.oveleon.de) welches ermöglicht, auf Basis des [Open Source CMS Contao](https://www.contao.org), eigene Immobilen-Webseiten zu erstellen.

### Warum der EstateManager?

Nach über 15 Jahren Erfahrung bei der Entwicklung von Immobilien-Lösungen verschiedenster Immobilienmakler, CRM-Systeme sowie Schnittstellen haben wir den Entschluss gefasst, eine Lösung zu schaffen, die den Anforderungen von Immobilienmaklern in allen Bereichen gerecht werden soll.

Der Contao EstateManager zeichnet sich vor allem durch seine hohe Flexibilität und Anpassungsfähigkeit aus. Durch die Verwaltbarkeit von Immobilien-Typen und Gruppen, Filtern, Feldformatierungen, Importschnittstellen und vielen weiteren Immobilienbestandteilen hat man direkten Einfluss auf das Verhalten und der Darstellung seines Immobilienkataloges.

### Spezifikationen

Die Entwicklung wurde unter Berücksichtigung des OpenImmo-Standards durchgeführt.

### Warum Contao?

Kurz gesagt arbeiten wir bereits seit vielen Jahren mit Contao und empfinden das System und dessen Community als sehr angenehm, zukunftsorientiert und leistungsfähig. In unseren Augen also der perfekte Unterbau für ein solches Projekt.

Noch kürzer gesagt - Weil wir Contao lieben und schätzen gelernt haben :heart:


# Installation

Open Source EstateManager for Contao CMS

### Installation

{% tabs %}
{% tab title="Composer" %}

```bash
$ composer require contao-estatemanager/core
```

{% endtab %}

{% tab title="Contao-Manager" %}
Über die Suche des Contao Manager kann der Begriff `EstateManager` gesucht werden. Anschließend wählt man das Paket `Contao EstateManager Core` aus und installiert es über den Reiter "*Pakete*". Eine detaillierte Anleitung wie man mit dem Contao-Manager arbeitet, findest du [hier](https://docs.contao.org/manual/de/installation/erweiterungen-installieren/).
{% endtab %}

{% tab title="GitHub" %}
Installation direkt über GitHub:

{% embed url="<https://github.com/contao-estatemanager/core>" %}

Manuelle Integration in der `composer.json`:

```
...
"repositories": [
    {
        "type": "git",
        "url": "https://github.com/contao-estatemanager/core.git"
    }
],
"require": {
    "contao-estatemanager/core": "^1.0"
}
...
```

{% endtab %}
{% endtabs %}

Nach der Installation muss das [Contao-Installtool](https://docs.contao.org/manual/de/installation/contao-installtool/) aufgerufen und die Datenbank aktualisiert werden.

### Systemvoraussetzungen

* [PHP](https://www.php.net/ChangeLog-7.php#PHP_7_1) `^8.1`
* [MySQL](https://www.mysql.com/de/) `>5.7` oder gleichwertiger [MariaDB](https://mariadb.org) Server
* [Contao](https://github.com/contao/contao) `^4.13`

Sofern der EstateManager über Composer oder dem Contao Manager installiert wird, werden alle benötigten Abhängigkeiten mit installiert.

{% hint style="info" %}
Bitte überprüfe ebenfalls die [Systemvoraussetzungen](https://docs.contao.org/manual/de/installation/systemvoraussetzungen/) von Contao
{% endhint %}


# Backend-Konfiguration

Nach der Installation stellt der EstateManager im Backend unter dem Reiter *Verwaltung* eine Übersicht aller Backend-Konfigurationen bereit:

* [Einstellungen](/installation-konfiguration/backend-konfiguration/einstellungen)
* [Schnittstellen](/installation-konfiguration/backend-konfiguration/schnittstellen)
* [Objekttypen](/installation-konfiguration/backend-konfiguration/objekttypen)
* [Anbieter & Standorte](/installation-konfiguration/backend-konfiguration/anbieter-standorte)
* [Filter](/installation-konfiguration/backend-konfiguration/filter)
* [Feldformatierungen](/installation-konfiguration/backend-konfiguration/feldformatierungen)
* [Exposé-Module](/installation-konfiguration/backend-konfiguration/expose-module)


# Einstellungen

Hier können grundlegende Einstellungen für verschiedene Bereiche des EstateManagers gesetzt werden.

### Globale Konfiguration

:small\_blue\_diamond:`E-Mail-Adresse des technischen Administrators`

*E-Mail-Adresse des technischen Administrators wird verwendet, um über Fehler (bspw. wenn eine Immobilie nicht importiert werden konnte) informiert zu werden.*

### Listen & Darstellung

:small\_blue\_diamond:`Standard Sortierung`

*Definiert die Standard-Sortierung der Immobilien in Listen.*

:small\_blue\_diamond:`Anzeigedauer des "Neu" Status-Token`

*Definiert wie lange eine Immobilie als "Neu" eingestuft und der entsprechende Status-Token ausgegeben wird.*

:small\_blue\_diamond:`Max. Anzahl der primären Details`

*Definiert die maximale Anzahl der primären Details einer Immobilie in Listen. Primäre Details können individuell für jeden* [*Objekttypen* ](/installation-konfiguration/backend-konfiguration/objekttypen)*definiert werden.*

:small\_blue\_diamond:`Max. Anzahl der primären Attribute`

*Definiert die maximale Anzahl der primären Attribute einer Immobilie in Listen Primäre Attribute können ebenfalls individuell für jeden* [*Objekttypen* ](/installation-konfiguration/backend-konfiguration/objekttypen)*definiert werden.*

:small\_blue\_diamond:`Standard-Bild`

*Standard-Bild, welches ausgegeben wird, sofern eine Immobilie keine Bilder hinterlegt hat.*

### Anbieter / Kontaktpersonen

:small\_blue\_diamond:`Standard-Bild Kontaktperson`

*Geschlechtsneutrales Platzhalter-Bild für Kontaktpersonen. Sofern eine Kontaktperson kein Bild und keine Anrede hinterlegt hat, wird das hier eingestellte Platzhalter-Bild verwendet.*

:small\_blue\_diamond:`Standard-Bild Kontaktpersonen (weiblich)`

*Platzhalter-Bild für weibliche Kontaktpersonen.*

:small\_blue\_diamond:`Standard-Bild Kontaktperson (männlich)`

*Platzhalter-Bild für männliche Kontaktpersonen.*

### Preis- / Flächenformatierung

:small\_blue\_diamond:`Dezimal-Trennzeichen`

*Trennzeichen für Dezimalstellen in Preis- oder Flächenangaben.*

:small\_blue\_diamond:`Tausender-Trennzeichen`

*Tausender-Trennzeichen für Preis- oder Flächenangaben.*

### Filter

:small\_blue\_diamond:`Verfügbare Optionen: Zimmer`

*Die zur Auswahl stehenden Zimmer-Optionen (Zahl), welche im dafür vorgesehenen Filter-Widget zur Verfügung stehen. Die Eingabe erfolgt dabei in einer mit Kommas getrennten Liste und unterstützt Gleitkommazahl. (Bspw. `1,1.5,2,2.5`)*


# Schnittstellen

Mithilfe von Schnittstellen können **Immobilen und Kontaktpersonen importiert** sowie mit einer **Maklersoftware synchronisiert** werden. Der Abgleich von Immobilien findet dabei auf Basis des **OpenImmo** Standards statt, sodass Immobilien-Datensätze und dessen Kontaktpersonen automatisch erstellt, aktualisiert und gelöscht werden können.

* [Konfiguration](/installation-konfiguration/backend-konfiguration/schnittstellen/konfiguration)
* [Synchronisation](/installation-konfiguration/backend-konfiguration/schnittstellen/synchronisation)
* [Feldzuordnungen](/installation-konfiguration/backend-konfiguration/schnittstellen/feldzuordnungen)


# Konfiguration

Schnittstellen anlegen und Verwalten

### Schnittstellen konfigurieren

Schnittstellen können den eigenen Anforderungen entsprechend umfangreich konfiguriert werden. Dabei können beliebig viele Schnittstellen angelegt werden, um Datensätze unterschiedlicher Quellen und Strukturen zuverlässig importieren zu können. Eine Schnittstelle **muss einem eindeutigen Anbieter zugeordnet werden**, weshalb **vor der** Schnittstellen-**Konfiguration** der entsprechende **Anbieter angelegt werden muss**.

{% hint style="info" %}
Anbieter können unter "<mark style="background-color:blue;">**EstateManager > Verwaltung > Anbieter/Standorte verwalten**</mark>" eingerichtet werden. Für die Zuordnung von Immobiliendatensätzen ist die **Anbieternummer** von Nöten.
{% endhint %}

### Titel & Typ

:small\_blue\_diamond:`Titel`

*Dient der Identifizierung einer Schnittstelle im Backend.*

:small\_blue\_diamond:`Typ`

*Mithilfe des Typs können verschiedene Arten von Schnittstellen konfiguriert werden. Standardmäßig steht der Typ "OpenImmo" zur Verfügung, welcher den Import nach den Regeln des OpenImmo Standards durchführt.*

### OpenImmo Feld-Konfiguration

:small\_blue\_diamond:`Anbieter`

*Eine Schnittstelle **muss** einem bestimmten **Anbieter zugeordnet werden**, damit Immobilien und Kontaktpersonen stets diesem Anbieter zugeordnet werden können.*

:small\_blue\_diamond:`Anbieternummer`

*Die eindeutige Anbieternummer der OpenImmo Übertragung.*

{% hint style="danger" %}
Die **Anbieternummer ist essenziell** für die Übertragung von Immobilien und Kontaktpersonen.
{% endhint %}

:small\_blue\_diamond:`Eindeutiges Anbieterfeld`

*Gibt an, über welchen Wert eine OpenImmo Übertragung eindeutig einem bestimmten **Anbieter zugeordnet** werden kann.*

:small\_blue\_diamond:`Eindeutiges Feld`

*Gibt an, über welchen Wert eine OpenImmo Übertragung eindeutig einer bestimmten **Immobilie zugeordnet** werden kann.*

{% hint style="warning" %}
Immobilien müssen auf mehrsprachigen Websites mehrfach in den jeweils unterschiedlichen Sprachen importiert werden. Diese Immobilien teilen sich dabei oft eine gemeinsame Objektnummer, weswegen das eindeutige Feld auf den Wert festgelegt werden muss, über den sich ein Immobiliendatensatz eindeutig identifizieren lässt.
{% endhint %}

:small\_blue\_diamond:`Importverzeichnis`

*Verzeichnis, in welchem die OpenImmo **Übertragungen abgelegt werden**, damit diese durch die Schnittstelle **gefunden** und **importiert werden** können.*

:small\_blue\_diamond:`Zielverzeichnis`

*Verzeichnis, in dem **Bilder und Dokumente von Immobiliendatensätzen** abgelegt werden. Für jeden Immobiliendatensatz wird dabei ein eigener Ordner (Objektnummer) innerhalb eines Ordners des Anbieters (Anbieternummer) angelegt.*

:small\_blue\_diamond:`Importverzeichnis Kontaktperson`

*Verzeichnis, in dem **Bilder von Kontaktpersonen** abgelegt werden.*

### Kontaktperson-Einstellungen

Über die Palette "Kontaktperson-Einstellungen" kann eingestellt werden, wie Kontaktpersonen während eines Imports behandelt werden sollen und ob Immobilien anderer Anbieter importiert und dabei einer eigenen Kontaktperson zugeordnet werden sollen.

:small\_blue\_diamond:`Kontaktperson`

*Hier kann angegeben werden, ob **neue Kontaktpersonen** durch die Schnittstelle **erstellt** und / oder **aktualisiert** werden sollen.*

{% hint style="warning" %}
Kann eine Immobilie während eines Imports keiner Kontaktperson zugeordnet werden, wird die Immobilie übersprungen und nicht importiert. Darf über die Schnittstelle keine Kontaktperson erstellt werden, muss sichergestellt werden, dass die Kontaktperson in der Anbieterverwaltung existiert, um Immobilien importieren zu können.
{% endhint %}

:small\_blue\_diamond:`Eindeutiges Feld der Kontaktperson`

*Hier muss das Feld ausgewählt werden, über das eine Kontaktperson eindeutig identifiziert werden kann.*

* E-Mail (Zentrale)
* E-Mail (Direkt)
* Persononennummer
* Nachname, Vorname

{% hint style="info" %}
Die Personennummer stellt die zuverlässigste Möglichkeit der Identifizierung dar und wird daher von uns empfohlen.
{% endhint %}

&#x20;:small\_blue\_diamond:`Datensätze anderer Anbieter importieren`

*Hier kann angegeben werden, wie mit Immobilien anderer Anbieter umgegangen werden soll. Für gewöhnlich werden innerhalb einer OpenImmo Übertragung lediglich Immobilien des eigenen Anbieters übertragen. Sollte dies nicht der Fall sein, können Immobilien anderer Anbieter schlicht mit den Einstellungen der eigenen Schnittstelle importiert werden oder alternativ anhand der Vermarktungsart einer bestimmten Kontaktperson zugeordnet werden.*

#### Zuweisung von Datensätzen

Durch Auswahl der Option "Zuweisen" können **Datensätze**, welche **keinen Anbieter zugeordnet** werden können, **einer bestimmten Kontaktperson zugeordnet werden**.

:small\_blue\_diamond:`Kontaktperson Kauf-Objekte`

*Hier müssen Sie eine Kontaktperson auswählen, welcher **Kauf-Objekte** zugewiesen werden.*

:small\_blue\_diamond:`Kontaktperson Miet-Objekte`

*Hier müssen Sie eine Kontaktperson auswählen, welcher **Miet-Objekte** zugewiesen werden.*

:small\_blue\_diamond:`Kontaktperson Erbpacht-Objekte`

*Hier müssen Sie eine Kontaktperson auswählen, welcher **Erbpacht-Objekte** zugewiesen werden.*

:small\_blue\_diamond:`Kontaktperson Leasing-Objekte`

*Hier müssen Sie eine Kontaktperson auswählen, welcher **Leasing-Objekte** zugewiesen werden.*

### Experten-Einstellungen

:small\_blue\_diamond:`Datensätze überspringen`

*Hier können Sie **auswählen,** ob Immobiliendatensätze mit **fehlendem Objekttitel** oder fehlender **Objektbeschreibung*** *<mark style="color:orange;">**nicht importiert**</mark> werden sollen.*

:small\_blue\_diamond:`Datensätze nicht veröffentlichen`

*Einstellung, um **neu importierte Immobiliendatensätze nicht automatisch** auf der Website zu **veröffentlichen**.*

### Synchronisierungs-Einstellungen

Für jede Schnittstelle kann festgelegt werden, wie oft die Synchronisierung der Immobiliendatensätze stattfinden soll, wie lange alte Synchronisierungsdateien existieren dürfen und wie viele Dateien pro Vorgang synchronisiert werden sollen.

{% hint style="warning" %}
Die Ausführung der Synchronisierung erfolgt über einen **poor man cron**. Hierbei handelt es sich um ein Modul, welches die **Cron-Operation** über **normale Browser-/Seitenanfragen** ausführt.\
\
[Weitere Hinweise zu Cronjobs (Contao)](https://docs.contao.org/manual/de/system/einstellungen/#cronjob-einstellungen)
{% endhint %}

:small\_blue\_diamond:`Automatische Synchronisierung`

*Hier kann die **Frequenz** der automatischen Synchronisierung eingestellt werden. Um **nur manuelle** Synchronisationen zu erlauben, kann hier "**Niemals**" ausgewählt werden.*\
*Die manuelle Synchronisation wird über das* ![](/files/MXUicnJ6fcqsSY8r18i9)-Symbol in der Übersicht ausgeführt.

:small\_blue\_diamond:`Dateien älter als * löschen`

Bereits **synchronisierte Immobiliendatensätze** werden **nicht** automatisch **gelöscht**. Mithilfe dieser Einstellung werden diese Datensätze **nach der eingestellten Frequenz gelöscht**.

:small\_blue\_diamond:`Maximale Anzahl an Dateien pro Synchronisation`

Hier kann die maximale Anzahl an Dateien definiert werden, welche während des Imports synchronisiert werden sollen.


# Synchronisation

Bereits eingerichtete Schnittstellen synchronisieren Immobiliendatensätze anhand der Schnittstellen-Konfiguration.

{% hint style="info" %}
Die **Synchronisation** von Immobiliendatensätzen erfolgt **über einen Teilabgleich**. \
Durch einen Teilabgleich können einzelne **Löschaufträge** für Immobiliendatensätze erfolgen. Löschaufträge werden ausschließlich von Teilabgleichen eines ERP-Systems (z. B. onOffice) übermittelt.\
\
Ein **Vollausgleich ist bei der initialen Befüllung** des Systems erlaubt. Hierbei werden Immobilien **nur hinzugefügt**, durch den Vollausgleich können jedoch die Datensätze jedoch **nicht gelöscht** werden.
{% endhint %}

### Manuelle Synchronisierung

Die manuelle Synchronisierung von Immobiliendatensätzen ist über das ![](/files/MXUicnJ6fcqsSY8r18i9)-Symbol in der Schnittstellenübersicht möglich. Durch Klicken des Symbols öffnet sich eine neue Maske, in welcher weitere Details zu Datensätzen vorzufinden sind.

#### Symbole

Die nachfolgenden Symbole bilden den Synchronisierungsstatus ab:

* <img src="/files/AWyadGYYl726EAddOb8Q" alt="" data-size="line"> = Bereits synchronisiert
* <img src="/files/cT83iVZkF9qwzhpvkLo5" alt="" data-size="line"> = Fehler bei der Synchronisierung
* <img src="/files/EYg10SX0s5BWnX89HyNq" alt="" data-size="line"> = Noch nicht synchronisiert

#### Weitere Felder

:small\_blue\_diamond:`Dateipfad`

Der Dateipfad dient der Lokalisation des Datensatzes. Hier kann überprüft werden, um welchen Datensatz es sich handelt.

:small\_blue\_diamond:`Letzte Änderung`

Der Timestamp der letzten Änderung dient zur Kontrolle von aktualisierten Datensätzen.

:small\_blue\_diamond:`Dateigröße`

Gibt die Dateigröße des Datensatzes aus.

:small\_blue\_diamond:`Letzte Synchronisierung`

Gibt die Uhrzeit und das Datum der letzten Synchronisation dieses Datensatzes an.&#x20;

:small\_blue\_diamond:`Benutzer`

Zeigt den Benutzer an, durch den die Synchronisierung angestoßen wurde.

#### Datensatz synchronisieren

Durch das ![](/files/MXUicnJ6fcqsSY8r18i9)-Symbol können Datensätze manuell synchronisiert werden.

### Verlauf der Synchronisationen

Der Verlauf der zuletzt synchronisierten Dateien lässt sich über das Symbol <img src="/files/UGCRhz3MvRh6Ty1OEfwc" alt="" data-size="line">öffnen.\
In dieser Übersicht sieht man die zuletzt synchronisierten Dateien mit einer Meldung. Weitere Details lassen sich über die Details des Eintrags aufrufen.

### Bereinigung von Dateien

Beim Import von Immobiliendatensätzen werden Bilder und Anhänge in der Dateiverwaltung für eine Immobilie im ausgewählten Importverzeichnis abgelegt. Durch Löschaufträge werden die zugehörigen Dateien gelöscht.

{% hint style="warning" %}
Bei einem **Vollausgleich** werden Immobiliendatensätze **nur angelegt**, eine **Löschung** der Datensätze ist hier **nicht möglich**.
{% endhint %}

Mithilfe der Funktion **Datensätze aufräumen** <img src="/files/8DvHpgVpCx5LYgZiSUri" alt="" data-size="line"> lassen sich Dateien, welche keiner Immobilie zugeordnet werden können, löschen.


# Feldzuordnungen

Zuordnung von Feldern für Immobiliendatensätze

**Innerhalb jeder Schnittstelle** ist es möglich, jedes **Feld** einer **Import-XML** einem bestimmten Feld der im Contao EstateManager existierenden Objektfelder **zuzuordnen** und zu formatieren.

Die XML-Datei, welche die OpenImmo Felder beinhaltet, kann sich auch innerhalb eines importierten Archivs befinden.

Feldzuordnungen sind notwendig für das Speichern der Informationen von importierten Objekten.

{% hint style="danger" %}
Wenn **keine Feldzuordnungen** angelegt sind, können Objekte **nicht synchronisiert** werden!
{% endhint %}

### OpenImmo Feldzuordnungen erstellen

Nach der Erstellung einer neuen Schnittstelle **existieren noch keine Zuordnungen** für Felder des OpenImmo-Standards.

{% hint style="info" %}
Durch **Felder zurücksetzen** <img src="/files/MXUicnJ6fcqsSY8r18i9" alt="" data-size="line"> kann eine Standardzuordnung erstellt werden.
{% endhint %}

### Neue Feldzuordnung erstellen

Neue Feldzuordnungen können über **Neue Feldzuordnung** ![](/files/wtmv5YICcYgHBmz5eAkz) erstellt werden.

### Typ

:small\_blue\_diamond:`Typ`

*Hier kann der Datentyp ausgewählt werden, auf den die Feldzuordnung verweisen soll:*

* Immobilie\
  *Bezieht sich auf die Tabelle **tl\_real\_estate** und somit auf einen Immobiliendatensatz.*
* Kontaktperson\
  *Bezieht sich auf die Tabelle **tl\_contact\_person** und somit auf eine Kontaktperson (Innerhalb der Anbieterverwaltung).*

:small\_blue\_diamond:`Attribut`

*Attribute sind Informationen für den ausgewählten Typen, welche in der jeweiligen Datenbank gespeichert werden. Hier kann das Datenbankfeld für die Zuordnung ausgewählt werden.*

### Feld-Einstellungen

Die Feldeinstellungen dienen dazu, die übertragenen Feldinformationen innerhalb einer Importdatei ermitteln zu können. Mithilfe dieser Einstellungen ist es möglich, verschiedene Importdateien einzulesen, um sie anschließend korrekt in das System zu überführen.

:small\_blue\_diamond:`OpenImmo-Feldgruppe`

*Feldgruppen dienen zur Identifizierung einer Kategorie. Innerhalb einer Feldgruppe können Felder gefunden werden.*

#### Beispielhafte Ausschnitte aus einer Import.xml

{% tabs %}
{% tab title="Normale Feldgruppe" %}
Im nachfolgenden Beispiel ist `<geo>` die OpenImmo-Feldgruppe, die innen liegenden Informationen sind OpenImmo-Felder:

```
<geo>
    <plz>12345</plz>
    <ort>Musterstadt</ort>
    <strasse>Musterstrasse</strasse>
    <hausnummer>1</hausnummer>
</geo>
```

Die **OpenImmo-Feldgruppe** für die Postleitzahl einer Immobilie wäre somit:

> **geo**
> {% endtab %}

{% tab title="Verschachtelte Feldgruppe" %}
Im nachfolgenden Beispiel ist die Information des OpenImmo-Feldes `<gueltis_bis>` innerhalb von `<energiepass>`, welches sich wiederum in `<zustand_angaben>`befindet.&#x20;

```
<zustand_angaben>
    <baujahr>1970</baujahr>
    <energiepass>
        <epart>BEDARF</epart>
        <gueltig_bis>01.01.1970</gueltig_bis>
        <endenergiebedarf>34.6</endenergiebedarf>
    </energiepass>
</zustand_angaben>
```

Der Zugriff auf das OpenImmo-Feld `<gueltig_bis>` wäre mit folgender Konfiguration der **OpenImmo-Feldgruppe** gegeben:

> **zustand\_angaben/energiepass**
> {% endtab %}
> {% endtabs %}

:small\_blue\_diamond:`OpenImmo-Feld`

*Innerhalb der OpenImmo-Felder befinden sich Werte . Auf diese kann über verschiedene Wege zugegriffen werden:*

#### Beispielhafte Ausschnitte aus einer Import.xml

{% tabs %}
{% tab title="Element-Werte" %}
Im nachfolgenden Beispiel wird der Wert **Mustermann** innerhalb von `<name>` ausgelesen.

```
<kontaktperson>
    <email_zentrale>info@estatemanager.com</email_zentrale>
    <tel_zentrale>02171/4015150</tel_zentrale>
    <name>Mustermann</name>
    <vorname>Max</vorname>
    <anrede>Herr</anrede>
</kontaktperson>
```

Hierfür ist folgende Konfiguration notwendig:

> **OpenImmo-Feldgruppe:** kontaktperson
>
> **OpenImmo-Feld:** name
> {% endtab %}

{% tab title="Attribut-Werte" %}
Im nachfolgenden Beispiel wird der Wert **51.06995** des Attributs `breitengrad` innerhalb von `<geokoordinaten>` ausgelesen.\
\
Auf Attributwerte kann mithilfe von <mark style="color:blue;">`element@attribut`</mark> zugegriffen werden.

```
<geo>
    <plz>12345</plz>
    <ort>Musterstadt</ort>
    <geokoordinaten breitengrad="51.06995" laengengrad="6.99735"/>
    <strasse>Musterstr.</strasse>
    <hausnummer>123</hausnummer>
    <land iso_land="DEU"/>
</geo>
```

Hierfür ist folgende Konfiguration notwendig:

> **OpenImmo-Feldgruppe:** geo
>
> **OpenImmo-Feld:** geokoordinaten\@breitengrad
> {% endtab %}

{% tab title="Attribut-Namen" %}
In manchen Fällen enthält ein Element mehrere Attribute mit Wahrheitswerten (Boolean).\
Mit folgenden Konfigurationen lassen sich die nachfolgenden Beispiele auslesen:

<br>

**Beispiel 1**\
Jedes Objekt enthält **nur eine Nutzungsart**. In der XML werden jedoch alle Nutzungsarten als Attribute übertragen. **Nur eine** der Nutzungsarten **ist wahr**.\
In diesem Fall soll also der **Attributname** ausgegeben werden, dessen *Attributwert* auf *true* steht.\
\
Um **auf den einen Attributnamen** eines Elements **zuzugreifen**, der **wahr** ist, kann <mark style="color:blue;">`attribut@+`</mark> verwendet werden.

```
<objektkategorie>
    <nutzungsart WAZ="false" GEWERBE="false" ANLAGE="false" WOHNEN="true"/>
    <vermarktungsart KAUF="true" LEASING="false" ERBPACHT="false" MIETE_PACHT="false"/>
    <objektart>
        <grundstueck grundst_typ="WOHNEN"/>
    </objektart>
</objektkategorie>
```

Hierfür ist folgende Konfiguration notwendig:

> **OpenImmo-Feldgruppe:** objektkategorie
>
> **OpenImmo-Feld:** nutzungsart@+

Der Rückgabewert mit der oben genannten Konfiguration wäre `WOHNEN`.

<br>

**Beispiel 2**\
In diesem Beispiel sind **mehrere Attribute** innerhalb eines Elements von Wichtigkeit. Es sollen **alle Attributnamen ausgelesen** werden, in welchen der Wert **wahr** ist.\
\
Um auf **alle Attributnamen** eines Elements zuzugreifen, **die wahr sind**, kann <mark style="color:blue;">`attribut@#`</mark> verwendet werden.

```
<ausstattung>
    <boden FLIESEN="true" TEPPICH="true" PARKETT="true" LAMINAT="true" MARMOR="true"/>
    <heizungsart ZENTRAL="true"/>
    <befeuerung OEL="true"/>
</ausstattung>
```

Hierfür ist folgende Konfiguration notwendig:

> **OpenImmo-Feldgruppe:** ausstattung
>
> **OpenImmo-Feld:** boden@#

Der Rückgabewert mit der oben genannten Konfiguration wäre:\
`FLIESEN TEPPICH PARKETT LAMINAT MARMOR`.

<br>

**Beispiel 3**\
In diesem Beispiel sollen alle Attribute eines Elements unabhängig des Attributwerts zurückgegeben werden.\
\
Um auf **alle Attributnamen** eines Elements zuzugreifen, **unabhängig des Attributwerts**, kann <mark style="color:blue;">`attribut@*`</mark> verwendet werden.

```
<example>
    <element attribut1 attribut2 attribut3 attribut4/>
</example>
```

Hierfür ist folgende Konfiguration notwendig:

> **OpenImmo-Feldgruppe:** example
>
> **OpenImmo-Feld:** element@\*

Der Rückgabewert mit der oben genannten Konfiguration wäre:\
`attribut1 attribut2 attribut3 attribut4`.
{% endtab %}

{% tab title="Element-Namen" %}
Im nachfolgenden Beispiel wird der Name des Elements **buero\_praxen** innerhalb von `<objektart>` ausgelesen.\
\
Auf den **Namen des ersten Elements innerhalb eines Elternelements** kann mithilfe von <mark style="color:blue;">`elternelement@[1]`</mark> zugegriffen werden.

```
<objektkategorie>
    <objektart>
        <buero_praxen buero_typ="BUEROFLAECHE"/>
    </objektart>
</objektkategorie>
```

Hierfür ist folgende Konfiguration notwendig:

> **OpenImmo-Feldgruppe:** objektkategorie
>
> **OpenImmo-Feld:** objektart@\[1]

Sollte der Name des **zweiten** oder **dritten** Elementes von Bedeutung sein, kann man auch <mark style="color:blue;">`elternelement@[`</mark><mark style="color:blue;">**`2`**</mark><mark style="color:blue;">`]`</mark> oder <mark style="color:blue;">`elternelement@[`</mark><mark style="color:blue;">**`3`**</mark><mark style="color:blue;">`]`</mark> verwenden.
{% endtab %}
{% endtabs %}

:small\_blue\_diamond:`OpenImmo-Bedingungsfeld`

*Bedingungsfelder sind ähnlich der OpenImmo-Felder und dienen mithilfe des `OpenImmo-Bedingungswertes` der Überprüfung von Attributwerten.*

#### Beispielhafter Ausschnitt aus einer Import.xml

{% tabs %}
{% tab title="Attributname" %}
Im nachfolgenden Beispiel sind `<infrastruktur>` und `<distanzen>` die OpenImmo-Feldgruppe, das Attribut **distanz\_zu** wäre das **OpenImmo-Bedingungsfeld**.\
\
Auf den Attributnamen kann mithilfe von <mark style="color:blue;">`@attributname`</mark> zugegriffen werden.

```
<infrastruktur>
    <distanzen distanz_zu="EINKAUFSMOEGLICHKEITEN">0.50</distanzen>
    <distanzen distanz_zu="FLUGHAFEN">25.00</distanzen>
    <distanzen distanz_zu="AUTOBAHN">2.00</distanzen>
    <distanzen distanz_zu="BUS">0.20</distanzen>
</infrastruktur>
```

Folgende Konfiguration ist für die Verwendung des Attributnamen als Bedingungsfeld von Nöten:

> **OpenImmo-Feldgruppe:**         infrastruktur/distanzen
>
> **OpenImmo-Feld:**                    &#x20;
>
> **OpenImmo-Bedingungsfeld:** @distanz\_zu

{% hint style="warning" %}
Ein Bedingungsfeld **benötigt immer einen Bedingungswert**, welcher überprüft werden muss.
{% endhint %}
{% endtab %}
{% endtabs %}

:small\_blue\_diamond:`OpenImmo-Bedingungswert`

*Der Bedingungswert ist der zu überprüfende **Attributwert** des Attributnamen, welcher im OpenImmo-Bedingungsfeld eingetragen wird.*\
*Mithilfe eines Bedingungswertes kann ein Wert innerhalb mehrerer gleichnamiger Elemente ausgelesen werden.*

#### Beispielhafte*r* Ausschnitt aus einer Import.xml

{% tabs %}
{% tab title="Attributwert" %}
Im nachfolgenden Beispiel sind `<infrastruktur>` und `<distanzen>` die OpenImmo-Feldgruppe, das Attribut `distanz_zu` ist das OpenImmo-Bedingungsfeld.\
\
Es soll auf den Wert des Elements `<distanzen distanz_zu="FLUGHAFEN">25.00</distanzen>` zugegriffen werden.\
\
Das Attribut `distanz_zu` ist das *OpenImmo-Bedingungsfeld*.\
Der Wert **FLUGHAFEN** ist der **OpenImmo-Bedingungswert**.

```
<infrastruktur>
    <distanzen distanz_zu="EINKAUFSMOEGLICHKEITEN">0.50</distanzen>
    <distanzen distanz_zu="FLUGHAFEN">25.00</distanzen>
    <distanzen distanz_zu="AUTOBAHN">2.00</distanzen>
    <distanzen distanz_zu="BUS">0.20</distanzen>
</infrastruktur>
```

Folgende Konfiguration ist für die Überprüfung des Attributwertes von Nöten:

> **OpenImmo-Feldgruppe:**           infrastruktur/distanzen
>
> **OpenImmo-Feld:**                      &#x20;
>
> **OpenImmo-Bedingungsfeld:**   @distanz\_zu
>
> **OpenImmo-Bedingungswert:**  FLUGHAFEN

Der Rückgabewert mit der oben genannten Konfiguration wäre:\
`25.00`.
{% endtab %}
{% endtabs %}

:small\_blue\_diamond:`Werte serialisieren`

*Mit dieser Option lassen sich gefundene Werte serialisieren. Anwendung findet diese Option z. B. bei Bildern eines Objektes.*

{% hint style="warning" %}
Diese Einstellung ist **notwendig für Felder**, welche **in Contao serialisiert** sind und als **ein Wert** in der **Datenbank gespeichert** werden. Ein Beispiel für einen serialisierten Wert in Contao wäre das Feld `multiSRC`.
{% endhint %}

#### Beispielhafter Ausschnitt aus einer Import.xml

{% tabs %}
{% tab title="Serialisierung" %}
Im nachfolgenden Beispiel sind:

* `<anhaenge>` und `<anhang>` die **OpenImmo-Feldgruppe**
* `<daten>` und `<pfad>` die **OpenImmo-Felder**
* `@gruppe` ist das **OpenImmo-Bedingungsfeld**
* `BILD` ist der zu überprüfende **OpenImmo-Bedingungswert**

\
Es sollen **alle Werte** innerhalb von **anhang/daten/pfad** ausgegeben werden, in welchem `<anhang>` das **Attribut** `gruppe` und den **Attributwert** `BILD` besitzt.

Da es sich um mehrere Werte handelt, welche dem System übergeben werden sollen, **kann hier serialisiert** werden.

```
<anhaenge>
    <anhang location="EXTERN" gruppe="TITELBILD">
        <anhangtitel>Immobilie 1</anhangtitel>
        <format>jpg</format>
        <daten>
            <pfad>Foto_1.jpg</pfad>
        </daten>
    </anhang>
    <anhang location="EXTERN" gruppe="BILD">
        <anhangtitel>Bild 1</anhangtitel>
        <format>jpg</format>
        <daten>
            <pfad>Bild_1.jpg</pfad>
        </daten>
    </anhang>
    <anhang location="EXTERN" gruppe="BILD">
        <anhangtitel>Bild 2</anhangtitel>
        <format>jpg</format>
        <daten>
            <pfad>Bild_2.jpg</pfad>
        </daten>
    </anhang>
    <anhang location="EXTERN" gruppe="BILD">
        <anhangtitel>Bild 3</anhangtitel>
        <format>jpg</format>
        <daten>
            <pfad>Bild_3.jpg</pfad>
        </daten>
    </anhang>
    <anhang location="EXTERN" gruppe="BILD">
        <anhangtitel>Bild 4</anhangtitel>
        <format>jpg</format>
        <daten>
            <pfad>Bild_3.jpg</pfad>
        </daten>
    </anhang>
</anhaenge>
```

Folgende Konfiguration dient der Serialisierung der Werte:

> **OpenImmo-Feldgruppe:**           anhaenge/anhang
>
> **OpenImmo-Feld:**                       daten/pfad
>
> **OpenImmo-Bedingungsfeld:**   @gruppe
>
> **OpenImmo-Bedingungswert:**  BILD\
> \
> **Werte Serialisieren:** ✅

Der Rückgabewert mit der oben genannten Konfiguration wäre:\
`{Bild1.jpg, Bild2.jpg, Bild3.jpg, Bild4.jpg}`
{% endtab %}
{% endtabs %}

:small\_blue\_diamond:`Leeren Wert mappen`

*Wenn importierte Objekte trotz **nicht-existenter Informationen in der Import.xml** einen **Standardwer**t erhalten sollen, kann hier bei Aktivierung der Checkbox, ein **gewünschter Standardwert** eingetragen werden.*

### Formatierung

Durch Formatierungen können die eingelesenen Werte vor der Speicherung in die Datenbank in eine gewünschte Form umgewandelt werden.

:small\_blue\_diamond:`Formatierung`

*Hier kann ausgewählt werden, **welche Formatierung** angewendet werden soll. Folgende Optionen stehen zur Verfügung:*

* Keine
* Zahl
* Datum
* Text
* Boolescher Wert

#### Zahl (Formatierung)

Kürzt eine Zahl anhand der übergebenen Dezimalstellen.

> Beispiel:\
> **Anzahl an Dezimalstellen:** 2\
> \
> Aus `5000` wird `50.00`

{% hint style="info" %}
Nutzt die Funktion [**number\_format()**](https://www.php.net/manual/de/function.number-format.php)
{% endhint %}

#### Datum (Formatierung)

Wandelt ein übertragenes Datum in einen Timestamp um. Optional kann ein Datumsformat angegeben werden.

> Beispiel:\
> Aus `1990-03-21` wird `638006400`

{% hint style="info" %}
Nutzt die Funktion [**strtotime()**](https://www.php.net/manual/de/function.strtotime.php)
{% endhint %}

#### Text (Formatierung)

Mithilfe der Text-Formatierung können gefundene Strings formatiert werden. Folgende Auswahlmöglichkeiten stehen zur Verfügung:

* Keine
* Kleinschreibung
* Großschreibung
* Erstes Zeichen groß
* Sonderzeichen ersetzen

{% tabs %}
{% tab title="Kleinschreibung" %}
**Setzt einen String in Kleinbuchstaben um.**

> Beispiel:\
> Aus `GEWERBE` wird `gewerbe`

{% hint style="info" %}
Nutzt die Funktion [**strtolower()**](https://php.net/manual/de/function.strtolower.php)
{% endhint %}
{% endtab %}

{% tab title="Großschreibung" %}
**Wandelt alle Zeichen eines Strings in Großbuchstaben um.**

> Beispiel:\
> Aus `beispiel` wird `BEISPIEL`

{% hint style="info" %}
Nutzt die Funktion [**strtoupper()**](https://php.net/manual/de/function.strtoupper.php)
{% endhint %}
{% endtab %}

{% tab title="Erstes Zeichen groß" %}
**Verwandelt das erste Zeichen eines Strings in einen Großbuchstaben.**

> Beispiel:\
> Aus `beispiel` wird `Beispiel`

{% hint style="info" %}
Nutzt die Funktion [**ucfirst()**](https://php.net/manual/de/function.ucfirst.php)
{% endhint %}
{% endtab %}

{% tab title="Sonderzeichen ersetzen" %}
**Ersetzt folgende Sonderzeichen innerhalb eines übertragenen Strings.**

| Original      | Umwandlung |
| ------------- | ---------- |
| ‘             | '          |
| ’             | '          |
| ”             | "          |
| “             | "          |
|              | "          |
|              | "          |
| –             | -          |
| —             | -          |
|              | -          |
| …             | \&#8230;   |
| {% endtab %}  |            |
| {% endtabs %} |            |

#### Trimmen (Textformatierung)

Entfernt Zwischenraumzeichen (oder andere Zeichen) am Anfang und Ende eines Strings.

{% hint style="info" %}
Nutzt die Funktion [**trim()**](https://www.php.net/manual/de/function.trim.php)
{% endhint %}

#### Boolescher Wert (Formatierung)

Wandelt übertragene Werte in boolsche Werte um (0 und 1). Kann mithilfe von **Vergleichswert** auch zur Überprüfung von vorgegebenen Werten genutzt werden.

### Experten-Einstellungen

:small\_blue\_diamond:`Datei speichern`

*Hier kann angegeben werden, ob eine **Datei bei einer Feldzuordnung gespeichert** werden soll. Diese Option ist **nötig**, um **übertragene Dateien** für ein Objekt zu **speichern**.*

Sollte sich im **Immobilien-Import** eine **Datei mit dem angegebenen Wert** befinden, wird diese Datei im Ordner der Immobilie **gespeichert**.


# Objektgruppen & -Typen

Objektgruppen und -typen dienen der **Zuordnung und Kontrolle von Objekten**. Eine Gruppe kann bspw. den **Vermarktungs- und Nutzungsbereich** festlegen, in den Objekte eingegliedert und später **sortiert, gefiltert oder in eigenen Listen** ausgegeben werden können. Übliche Gruppen wären dabei Wohnimmobilien zum Kauf, Wohnimmobilien zur Miete, Gewerbeobjekte zum Kauf, Gewerbeobjekte zur Miete. **Durch Objekttypen können diese** mithilfe der Nutzungs-, Vermarktungs- und Objektart **weiter spezialisiert** und **untergliedert werden**.

Die **Konfiguration ist zwingend notwendig**, um Objekte **filtern** und / oder ausgeben zu können. Objekte, welche sich im System befinden und **keiner** der angelegten **Objektgruppen / - Typen** **zugewiesen** werden kann, wird als ungültig erkannt und somit **nicht ausgegeben**.

Innerhalb der Objekttypen können außerdem für diesen Typen **spezielle Exposé-Seiten** definiert werden. Die hier definierten primären Felder wie "**Primärer Preis**", "**Primäre Fläche**", "Primäre Details" etc. werden herangezogen, um über den mitgelieferten Immobilien-Filter **gefiltert werden zu können**.

* [Objektgruppen](/installation-konfiguration/backend-konfiguration/objekttypen/objektgruppen)
* [Objekttypen](/installation-konfiguration/backend-konfiguration/objekttypen/objekttypen)

{% hint style="info" %}

#### Automatische Konfiguration

Mit Hilfe des [Einrichtungsassistenten ](https://www.contao-estatemanager.com/de/erweiterungen/einrichtungsassistent.html)können Objektgruppen und -Typen automatisch angelegt werden.
{% endhint %}


# Objektgruppen

Innerhalb von Objektgruppen kann eine spezielle **Sammlung von Immobilientypen** gesammelt und konfiguriert werden. Objektgruppen bieten die Möglichkeit, fachlich zueinander gehörende **Immobilientypen zu kategorisieren**, um diese **gruppiert im Frontend** der Website auszugeben. Durch die Gruppierung lässt sich das Verhalten der Website z.B. bei der Filterung von Immobilien detailliert einstellen, wodurch sich vielfältige Möglichkeiten zur Individualisierung an den vorgesehenen Immobilienbestand ergeben.

{% hint style="info" %}
**Mehrsprachigkeit**

Mit Hilfe von Immobiliengruppen können auch **mehrsprachige** Immobilien-Websites erstellt werden. Objektgruppen müssen dafür in der jeweiligen Sprache vorliegen und über die entsprechenden Frontend-Module in der korrekten Sprachversion der Website eingebunden werden.&#x20;
{% endhint %}

### Einstellungen

Objektgruppen müssen einer Vermarktungsart zugeordnet werden und über einen eindeutigen Titel zur Identifizierung verfügen. Optional kann eine Referenz-Seite angegeben werden, welche eine Übersicht sämtlicher Immobilien der Objektgruppe anzeigt. Dabei können auch beliebig viele Objektgruppen auf ein und dieselbe Unterseite zeigen, um detailliert einstellen zu können, auf welcher Unterseite, welche Immobilien angezeigt werden sollen und vieles mehr.

:small\_blue\_diamond:`Titel`

Dient der Identifizierung der Objektgruppe im Backend.

:small\_blue\_diamond:`Äquivalente Gruppe`

Die äquivalente Gruppe stellt die Objektgruppe dar, die verwendet werden soll, wenn die Vermarktungsart sich ändert. Dient der korrekten Weiterleitung im Frontend durch Betätigung des Immobilienfilters.

:small\_blue\_diamond:`Referenz-Seite`

Übersichtseite im Frontend, auf der alle Immobilien der Objektgruppen aufgelistet werden. Dient der korrekten Weiterleitung im Frontend, wenn kein spezifischer Immobilientyp ausgewählt wurde.

:small\_blue\_diamond:`Vermarktungsart`

Eine Objektgruppe muss immer einer spezifischen Vermarktungsart zugeordnet werden. Für die meisten Objektgruppen ergibt sich eine äquivalente Gruppe, die dieselben Immobilientypen der entsprechend anderen Vermarktungsart beinhaltet.

:small\_blue\_diamond:`Gruppe veröffentlichen`

Nicht veröffentlichte Objektgruppen können vollständig im Backend konfiguriert werden, ohne Auswirkungen auf den laufenden Betrieb der Website zu nehmen.


# Objekttypen

Objekttypen stellen den Dreh- und Angelpunkt dar, wenn es sich um das exakte **Verhalten und die Darstellung von Immobilien im Frontend** geht. Sie sorgen dafür, dass sich sämtliche Immobiliendatensätze im Frontend fachlich korrekt **filtern**, **sortieren** und **durchsuchen** lassen und sorgen für die korrekte Darstellung von Informationen jeder einzelnen Immobilie. Ein Immobiliendatensatz wird dabei durch die Kombination aus **Nutzungsart**, **Vermarktungsart** und **Objektart** eindeutig identifiziert.

{% hint style="info" %}
Das Verhalten kann durch Objekttypen detailliert eingestellt werden, sodass man beispielsweise bei Grundstücken nicht nach der Anzahl von Zimmern filtern kann oder bei Wohnungen nicht nach der Grundstücksfläche sortieren kann.
{% endhint %}

### Konfiguration

Objekttypen werden anhand der **Nutzungsart**, **Vermarktungsart** und **Objektart** einer Immobilie eindeutig identifiziert, wodurch wichtige Felder wie das primäre Flächen- und Preisfeld und andere Merkmale ermittelt werden können. Des Weiteren lassen sich **primäre Details**, **Sortierfelder**, **Filtermöglichkeiten** und weiteres einstellen und konfigurieren, wodurch Objekttypen exakt an individuelle Gegebenheiten angepasst werden können.

:small\_blue\_diamond:`Bezeichnung`

Dient als Bezeichner für den Objekttyp-Filter im Frontend.&#x20;

:small\_blue\_diamond:`Detaillierte Bezeichnung`

Die detaillierte Bezeichnung kann im Frontend anstelle der einfachen Bezeichnung ausgegeben werden.

{% hint style="info" %}
Muss verwendet werden, wenn im Objekttyp-Filter sowohl Kauf- als auch Miet-Objekte zur Verfügung stehen.&#x20;
{% endhint %}

:small\_blue\_diamond:`Äquivalenter Objekttyp`

Der Äquivalente Objekttyp wird angesteuert, wenn die Vermarktungsart des Vermarktungsart-Filter geändert wird.

{% hint style="info" %}
Wird verwendet, um beim Wechsel der Vermarktungs im Filter automatisch von z.B. *Eigentumswohnungen* zu *Wohnungen zur Miete* zu wechseln.&#x20;
{% endhint %}

### Weiterleitung

:small\_blue\_diamond:`Referenzseite`

Unterseite für einen oder mehrere spezielle Objekttypen. Wird hauptsächlich verwendet, wenn Objekttypen direkt über die Navigation erreichbar gemacht werden sollen. Des Weiteren wird man bei Auswahl des Objekttypen im Objekttyp-Filter automatisch zur zugewiesenen Referenzseite weitergeleitet.

:small\_blue\_diamond:`Spezielle Exposé-Seite`

Führt zu einer speziellen Exposé-Seite des Objekttypen, um im Frontend eine individuelle Darstellung zu ermöglichen.

### Feld-Konfiguration

Damit eine Immobilie im Frontend ausgegeben werden kann, muss diese eindeutig anhand der folgenden Felder identifiziert werden können.

:small\_blue\_diamond:`Nutzungsart`

Anhand der Nutzungsart kann eine Immobilie eindeutig einem Objekttypen zugeordnet werden.

:small\_blue\_diamond:`Vermarktungsart`

Anhand der Vermarktungsart kann eine Immobilie eindeutig einem Objekttypen zugeordnet werden.

:small\_blue\_diamond:`Objektart`

Anhand der Objektart kann eine Immobilie eindeutig einem Objekttypen zugeordnet werden.

{% hint style="danger" %}
Kann ein Immobiliendatensatz gleichzeitig mehreren Objekttypen zugeordnet werden, wird der zuerst gefundene Objekttyp verwendet, wodurch es zu Fehlern in der Darstellung und dem Verhalten kommen kann.
{% endhint %}

### Filter-Einstellungen

Hier werden die wichtigsten Eckdaten zur Filterung einer Immobilie definiert. Dient auch der korrekten Darstellung von Information in Immobilienlisten und dem Exopsé.

:small\_blue\_diamond:`Primäres Preisfeld`

Dient der zuverlässigen Anzeige des Preises eines speziellen Objekttypen.

{% hint style="warning" %}
Es wird automatisch **"auf Anfrage"** anstelle des Preises ausgegeben, sollte das primäre Preisfeld nicht befüllt sein.
{% endhint %}

:small\_blue\_diamond:`Primäres Flächenfeld`

Dient der zuverlässigen Anzeige der primären Fläche eines speziellen Objekttypen. Bei Grundstücken ist z.B. vor allem die Grundstücksfläche interessant, wohingegen bei Wohnobjekten die Wohnfläche angezeigt werden sollte.

:small\_blue\_diamond:`Primäre Filter`

Hier kann angegeben werden, über welche Filter ein Objekttyp im Frontend gefiltert werden kann. Bei Grundstücken sollte z.B. keine Möglichkeit bestehen nach Zimmern zu filtern.

:small\_blue\_diamond:`Sortieroptionen`

Hier kann angegeben werden, anhand welcher Felder ein Objekttyp über die Immobilien-Ergebnisliste sortiert werden kann. Bei Wohnungen ist es sinnvoll eine Sortiermöglichkeit anhand der Wohnfläche anzubieten, wohingegen Grundstücken nach der Grundstücksfläche sortierbar sein sollten. Weiterführend sollten Häuser beide Möglichkeiten anbieten.

### Darstellungseinstellungen

:small\_blue\_diamond:`Primäre Details`

Primäre Details werden in Immobilienlisten, sowie über das Exposé-Modul *Primäre Details* angezeigt, um im Frontend stets für den Objekttyp relevante Informationen anzuzeigen.

:small\_blue\_diamond:`Primäre Attribute`

Primäre Attribute werden vor allem über das Exposé-Modul *Primäre Attribute* ausgegeben, können optional aber bereits in Immobilienlisten angezeigt werden.

:small\_blue\_diamond:`Details sortieren`

Details einer Immobilie können über das Exposé-Modul *Details* in einer für den Objekttyp speziellen Reihenfolge ausgegeben werden.

:small\_blue\_diamond:`Feldsortierung`

Hier kann die Reihenfolge der Felder definiert werden, wenn Details sortieren aktiviert ist.

### Veröffentlichen

Unveröffentlichte Objekttypen werden nicht berücksichtigt und damit im Frontend nicht ausgegeben.&#x20;

{% hint style="danger" %}
Immobilien können nur angezeigt werden, wenn diese einem veröffentlichten Objekttypen zugeordnet werden können.
{% endhint %}


# Anbieter & Standorte

Über die Verwaltung der Anbieter und Kontaktpersonen können sämtliche Informationen eines Immobilienmaklers und dessen Ansprechpartner verwaltet werden. Neben den reinen Eckdaten kann hier außerdem das **Verhalten für die Zustellung von Kontaktanfragen** bestimmt werden, um diese gezielt an die richtigen Kontaktpersonen zustellen zu können.

* [Anbieter](/installation-konfiguration/backend-konfiguration/anbieter-standorte/anbieter)
* [Ansprechpartner](/installation-konfiguration/backend-konfiguration/anbieter-standorte/ansprechpartner)

### Datensätze importieren

Anbieter sind für den **Import** von Datensätzen wie **Immobilien und Ansprechpartner** essenziell, da nur Datensätze importiert werden können, die einem bestimmten Anbieter zugeordnet sind. Im **OpenImmo** Standard werden Datensätze dabei über eine **XML-Datei** übertragen, die stets einem konkreten Anbieter zugeordnet sind. Die Ermittlung des korrekten Anbieters erfolgt über die in der XML-Datei ebenfalls enthaltene **Anbieternummer** und muss der Anbieternummer des Anbieterdatensatzes entsprechen.

{% hint style="danger" %}
Immobiliendatensätze können nur importiert werden, wenn diese einer **gültigen Anbieter-ID** zugeordnet werden können.
{% endhint %}


# Anbieter

Anbieterdatensätze repräsentieren entweder einen **Immobilienmakler** oder die verschiedenen **Standorte eines Immobilienmaklers**. Neben den reinen Eckdaten kann hier außerdem das Verhalten für die Zustellung von Anfragen eingestellt werden. Die vorhandenen Eckdaten entsprechen zum Großteil den Vorgaben zu Anbietern aus dem OpenImmo Standard.

### &#x20;Neuen Anbieter erstellen

Neue Anbieter können über **Neuer Anbieter** ![](/files/wtmv5YICcYgHBmz5eAkz) erstellt werden.

### Allgemein

:small\_blue\_diamond:`Anbieter Nr.`

Die Anbieternummer ist essenziell für die Übertragung von Immobilien und Kontaktpersonen.

:small\_blue\_diamond:`Anbieter Nr. (OpenImmo)`

Die Anbieternummer (OpenImmo) kann als Alternative zur normalen Anbieternummer verwendet werden (Verhalten ist in Schnittstellen einstellbar).

:small\_blue\_diamond:`Linzenzkennung`

Die Lizenzkennung wird vorallem für Portalübertragungen verwendet und ist rein informativer Natur.

### Weiterleitung

:small\_blue\_diamond:`Weiterleitungsmodus`

Hier kann eingestellt werden, wer im Falle einer Kontakanfrage über das Anfrageformulars eines Exposés benachrichtig werden soll:

* Kontaktperson (wenn möglich)\
  *Zustellung erfolgt über das Feld "E-Mail-Adresse Direkt". Wenn dies nicht gesetzt ist, wird die "E-Mail-Adresse" des Anbieters verwendet.*
* Anbieter\
  *Zustellung erfolgt über das Feld "E-Mail-Adresse" des Anbieters.*
* Beide\
  *Versucht die E-Mail-Anfrage gleichwertig an den Anbieter und die Kontaktperson zu übermitteln.*

:small\_blue\_diamond:`Eigenen Absender verwenden`

Über diese Funktion kann ein alternativer Absender definiert werden, um nicht die E-Mail-Adresse des Systemadministrators verwenden zu müssen.

### Adressdaten & Impressum

Die Angaben zu den Adressdaten sowie dem Impressum entsprechen dem OpenImmo Standard und sollten insbesondere in Portalen sorgfältig gepflegt werden. Eckdaten eines Anbieters werden vor allem in Portalen und hier in Immobilienlisten und Exposés angezeigt und spielen für kleinere Websites keine weitere Rolle.

**Adressdaten:**

:small\_blue\_diamond:`Firma`

:small\_blue\_diamond:`Postleitzahl`

:small\_blue\_diamond:`Ort`

:small\_blue\_diamond:`Straße`

:small\_blue\_diamond:`Hausnummer`

:small\_blue\_diamond:`Bundesland`

:small\_blue\_diamond:`Land`

:small\_blue\_diamond:`Breitengrad`

:small\_blue\_diamond:`Längengrad`

:small\_blue\_diamond:`Telefonnummer`

:small\_blue\_diamond:`Telefonnummer 2`

:small\_blue\_diamond:`Faxnummer`

:small\_blue\_diamond:`E-Mail-Adresse`

:small\_blue\_diamond:`Homepage`

:small\_blue\_diamond:`Adresse (Freitext)`

**Weitere Felder:**

:small\_blue\_diamond:`Vertretungsberechtigte Person`

:small\_blue\_diamond:`Beaufsichtigungsbehörde`

:small\_blue\_diamond:`Handelsregister`

:small\_blue\_diamond:`Handeslregisternummer`

:small\_blue\_diamond:`Umsatzsteuer-Identifikationsnummer`

:small\_blue\_diamond:`Steuernummer`

:small\_blue\_diamond:`Weitere Angaben`

:small\_blue\_diamond:`Impressum (Freitext)`

:small\_blue\_diamond:`Beschreibung (Freitext)`

### Anbieter-Logo

Neben den reinen Eckdaten kann auch das Anbieterlogo im Frontend ausgegeben werden. Dieses muss über die Dateiverwaltung zugewiesen werden und kann nicht importiert werden.


# Ansprechpartner

Über die Ansprechpartnerverwaltung können sämtliche Ansprechpartner eines Anbieters verwaltet werden. Neben **Kontaktdaten**, **Informationen zum Postfach** und einem **Bild** können hier zusätzlich zu den Adressdaten des Anbieters **eigene Adressdaten** hinterlegt werden. Die verfügbaren Felder entsprechen zum Großteil wieder den Vorgaben des OpenImmo-Standards und können dadurch problemlos über eine OpenImmo-Übertragung importiert werden.

### Datensätze importieren

Um Ansprechpartner über eine OpenImmo-Übertragung **erstellen** und **aktualisieren** zu können, muss ein Ansprechpartner **eindeutig identifiziert** werden können. In Schnittstellen gibt man dafür an, anhand welcher Informationen ein Ansprechpartner eindeutig identifiziert werden kann. Weitere Informationen finden im Artikel zur [Schnittstellen-Konfiguration](/installation-konfiguration/backend-konfiguration/schnittstellen/konfiguration#kontaktperson-einstellungen).

### Informationen & Eckdaten

:small\_blue\_diamond:`Anrede`

:small\_blue\_diamond:`Firma`

:small\_blue\_diamond:`Vorname`

:small\_blue\_diamond:`Nachname`

:small\_blue\_diamond:`Titel`

:small\_blue\_diamond:`Position`

:small\_blue\_diamond:`Briefanrede`

:small\_blue\_diamond:`E-Mail (Zentrale)`

:small\_blue\_diamond:`E-Mail (Direkt)`

:small\_blue\_diamond:`E-Mail (Privat)`

:small\_blue\_diamond:`E-Mail (Sonstige)`

:small\_blue\_diamond:`E-Mail (Feedback)`

:small\_blue\_diamond:`Telefonnummer (Zentrale)`

:small\_blue\_diamond:`Telefonnummer`

:small\_blue\_diamond:`Faxnummer`

:small\_blue\_diamond:`Mobiltelefonnummer`

:small\_blue\_diamond:`Telefonnummer (Privat)`

:small\_blue\_diamond:`Telefonnummer (Sonstige)`

:small\_blue\_diamond:`Straße`

:small\_blue\_diamond:`Hausnummer`

:small\_blue\_diamond:`Postleitzahl`

:small\_blue\_diamond:`Ort`

:small\_blue\_diamond:`Land`

:small\_blue\_diamond:`Zusatzfeld`

:small\_blue\_diamond:`Anschrift (Freitext)`

:small\_blue\_diamond:`Adressfreigabe`

:small\_blue\_diamond:`Postfach`

:small\_blue\_diamond:`Postfach (PLZ)`

:small\_blue\_diamond:`Postfach (Ort)`

:small\_blue\_diamond:`Personennummer`

### Ansprechpartner-Foto

Das Foto des Ansprechpartners kann z.B. im Exposé ausgegeben werden. Das Foto eines Ansprechpartners kann über die OpenImmo-Übertragung importiert werden. Sollte dies nicht gewünscht sein, muss die Feldzuordnung in der entsprechenden Schnittstelle entfernt werden damit das Foto nicht mehr durch diese überschrieben wird.


# Filter

Ein Immobilienfilter zur Suche und Filterung von Objekten

Mithilfe von Immobilien-Filtern lassen sich Objekte in Kombination mit einer Immobilien-Ergebnisliste suche und filtern. Ein eingestellter Filter lässt sich als Inhaltselement oder als Frontend-Modul in einer Seite einbinden.

![](/files/4Yvm9yVMc7xL7InjJQo2)

### Funktionsweise

Filter können ähnlich wie Formulare im Contao Formulargenerator aufgebaut und verwaltet werden. Anstelle von Formularfeldern stehen dabei in der Filterverwaltung sogenannte Filter-Widgets zur Verfügung, über die ein Filter ganz nach den eigenen Wünschen eingerichtet werden kann.

### Neuen Filter erstellen

Neue Filter können über **Neuer Filter** ![](/files/wtmv5YICcYgHBmz5eAkz) erstellt werden.

### Titel & Weiterleitung

:small\_blue\_diamond:`Titel`

Dient der Identifizierung im Backend.

:small\_blue\_diamond:`Filteralias`

Der Filteralias ist eine eindeutige Referenz, die anstelle der numerischen Filter-ID verwendet werden kann.

:small\_blue\_diamond:`Weiterleitungsseite`

Hier kann die Seite eingetragen werden, zu der man beim Abschicken des Filters weitergeleitet wird.

{% hint style="info" %}
Verfügen Objekttypen über eine eigene Referenzseite, muss die Weiterleitungsseite ggf. auf die Übersichtsseite aller Immobilien weitergeleitet werden, um stets zur korrekten Unterseite weitergeleitet zu werden.
{% endhint %}

### Filter-Einstellungen

:small\_blue\_diamond:`Objektgruppen`

Hier können die Objektgruppen ausgewählt werden, die für die Filterung berücksichtigt werden sollen.

:small\_blue\_diamond:`Bei Änderung Seite wechseln`

Hier kann eingestellt werden, ob der Filter automatisch abgeschickt wird bei Änderung der Objektart.

:small\_blue\_diamond:`Standardfilter`

Standardfilter werden angezeigt, wenn kein spezieller Objekttyp ausgewählt wurde.&#x20;

{% hint style="info" %}
Standardfilter sollten den kleinsten gemeinsamen Nenner aller Filtermöglichkeiten der verfügbaren Objekttypen anbieten. In der Regel sind dies *Preise* und *Flächen*, allerdings kann auch die *Anzahl der Zimmer* relevant sein, wenn keine Grundstücke angeboten werden.
{% endhint %}

:small\_blue\_diamond:`Verfügbare Optionen: Zimmer`

Eine kommagetrennte Liste der verfügbaren Optionen im Filter für die *Anzahl der Zimmer*. Mit Hilfe eines Punktes können auch halbe Zimmer angegeben werden (1, 1.5, 2, 2.5, 3, etc.).


# Filter-Widgets

Filter-Widgets ähneln Formularfeldern, welche anstelle des Contao Formulargenerator in der Filter-Verwaltung verwendet werden können. Filter-Widgets können innerhalb eines Filters an beliebiger Stelle positioniert werden, um das Erscheinungsbild eines Filters vollumfänglich steuern zu können.

### Verfügbare Filter-Widgets

* [Land](/installation-konfiguration/backend-konfiguration/filter/filter-widgets/land)
* [Adresse](/installation-konfiguration/backend-konfiguration/filter/filter-widgets/adresse)
* [Eindeutiges Feld / Objektnummer](/installation-konfiguration/backend-konfiguration/filter/filter-widgets/eindeutiges-feld-objektnummer)
* [Immobilien-Typ (kombiniert)](/installation-konfiguration/backend-konfiguration/filter/filter-widgets/immobilien-typ)
* [Immobilien-Typ (separiert)](/installation-konfiguration/backend-konfiguration/filter/filter-widgets/immobilien-typ-separiert)
* [Primäre Felder](/installation-konfiguration/backend-konfiguration/filter/filter-widgets/primaere-felder)
* [Zurücksetzen](/installation-konfiguration/backend-konfiguration/filter/filter-widgets/zuruecksetzen)
* [Absendefeld](/installation-konfiguration/backend-konfiguration/filter/filter-widgets/absendefeld)

{% hint style="info" %}
Filter-Widgets und deren Einstellungen können durch verschiedene [Erweiterungen](/erweiterungen/erweiterungen) um neue Möglichkeiten und Felder ergänzt werden. Die hier dokumentierten Filter-Widgets beinhalten ausschließlich die vom EstateManager (Core) gelieferten Einstellungsmöglichkeiten. Felder oder Widgets, welche durch Erweiterungen hinzugefügt wurden, können direkt in der Dokumentation der dafür verantwortlichen Erweiterung eingesehen werden.
{% endhint %}

### Weitere Filter-Widgets

Durch verschiedene Erweiterungen können weitere Filter-Widgets zur Verfügung gestellt werden.


# Land

Mit Hilfe des Landesfilters kann der Immobilienbestand über ein Auswahlfeld anhand des Landes gefiltert werden. Dabei kann entweder in allen Ländern oder aber nur nach einem Land gleichzeitig gefiltert werden. Eine dedizierte Mehrfachauswahl ist nicht vorgesehen.

### Konfiguration

&#x20;:small\_blue\_diamond:`Feldbezeichnung`

Die Feldbezeichnung wird als HTML-Label vor dem eigentlichen Auswahlfeld ausgeliefert.

&#x20;:small\_blue\_diamond:`Pflichtfeld`

In der Regel muss das Land nicht als Pflichtfeld deklariert werden.

&#x20;:small\_blue\_diamond:`Platzhalter`

Der Platzhalter wird als erste Option im Auswahlfeld ausgegeben.

### Länder-Optionen

Um lediglich relevante Länder im Filter zur Auswahl zu stellen, kann der Landesfilter entweder auf Basis des aktuellen Immobiliendatenbestandes oder anhand einer fest definierten Liste befüllt werden.

&#x20;:small\_blue\_diamond:`Quelle`

Hier kann eingestellt werden, auf welchem Datenbestand die Landesauswahl ermittelt werden soll.

* Vorhandener Datenbestand\
  *Landesauswahl wird anhand des existierenden Datenbestandes automatisch ermittelt.*
* Manuell definieren\
  *Anhand einer Optionsliste können manuell Länder angegeben werden.* <br>


# Adresse

Mit Hilfe des Adressfilters können Immobilien anhand der Stadt oder der Postleitzahl gefiltert werden. \
Zu beachten ist, dass **entweder** nach der **Stadt oder** nach der **Postleitzahl** gesucht wird. Die Suche erfolgt stets ungenau, sodass Städtenamen nicht vollständig ausgeschrieben werden müssen.

### Konfiguration

&#x20;:small\_blue\_diamond:`Feldbezeichnung`

Die Feldbezeichnung wird als HTML-Label vor dem eigentlichen Freitextfeld ausgeliefert.

&#x20;:small\_blue\_diamond:`Pflichtfeld`

In der Regel muss der Adressfilter nicht als Pflichtfeld deklariert werden.

&#x20;:small\_blue\_diamond:`Platzhalter`

Der Platzhalter wird als HTML Platzhalter-Attribut im Freitextfeld ausgegeben.

{% hint style="success" %}
**Tipp: Adressvervollständigung**

Über die Erweiterung [Google Autocomplete](/erweiterungen/erweiterungen/google-autocomplete) wird ein neues Filter-Widget zur Verfügung gestellt, welches eine Autovervollständigung von Postleitzahlen, Städten oder Regionen zur Verfügung stellt.
{% endhint %}


# Eindeutiges Feld / Objektnummer

Mit Hilfe des Filters "Eindeutiges Feld" kann nach einer speziellen Objektnummer gesucht werden. Konnte eine Immobilie eindeutig identifiziert werden, wird optional direkt die Exposé-Seite angesprungen.

### Konfiguration

&#x20;:small\_blue\_diamond:`Feldbezeichnung`

Die Feldbezeichnung wird als HTML-Label vor dem eigentlichen Freitextfeld ausgeliefert.

&#x20;:small\_blue\_diamond:`Pflichtfeld`

In der Regel muss das eindeutige Feld nicht als Pflichtfeld deklariert werden, es sei denn, es handelt sich um eine explizite Objektnummern-Suche.

&#x20;:small\_blue\_diamond:`Platzhalter`

Der Platzhalter wird als HTML Platzhalter-Attribut im Freitextfeld ausgegeben.

&#x20;:small\_blue\_diamond:`Ungenaue Suche`

Die ungenaue Suche kann aktiviert werden, um nur nach einem Teil der Objektnummer zu suchen.&#x20;

{% hint style="info" %}
**Mehrere Suchergebnisse**

Die ungenaue Suche ermöglicht es, dass **mehrere Objekte gefunden** werden können.
{% endhint %}


# Immobilien-Typ (kombiniert)

Der kombinierte Objekttyp-Filter stellt über ein einzelnes Auswahlfeld sämtliche Objekttypen **kategorisiert nach der Vermarktungsart** zur Verfügung. Das Verhalten ähnelt dem [separierten Immobilientyp](/installation-konfiguration/backend-konfiguration/filter/filter-widgets/immobilien-typ-separiert) weitestgehend, stellt allerdings kein dediziertes Auswahlfeld für die Vermarktungsart zur Verfügung.

### Konfiguration

:small\_blue\_diamond:`Feldbezeichnung`

Die Feldbezeichnung wird als HTML-Label vor dem eigentlichen Auswahlfeld ausgeliefert.

:small\_blue\_diamond:`Pflichtfeld`

In der Regel muss der Immobilientyp-Filter nicht als Pflichtfeld deklariert werden.

:small\_blue\_diamond:`Detaillierte Bezeichnung verwenden`

Hier kann eingestellt werden, dass der detaillierte Bezeichner anstelle des normalen Bezeichners eines Objekttypen im Frontend ausgegeben werden soll.

:small\_blue\_diamond:`Optionen zusammenfügen`

Verzichtet auf Optionsgruppen zur Kategorisierung des Auswahlfeldes.

{% hint style="warning" %}
Es wird empfohlen, den **detaillierten Bezeichner** bei **zusammengefügten Optionen** zu aktivieren, da die Vermarktungsart ggf. nicht ersichtlich ist.
{% endhint %}

:small\_blue\_diamond:`Placeholder anzeigen`

Hier kann angegeben werden, ob Placeholder im Auswahlfeld ausgegeben werden sollen.&#x20;

&#x20;


# Immobilien-Typ (separiert)

Der separierte Objekttyp-Filter stellt über **zwei dedizierte Auswahlfelder** die **Vermarktungsart** sowie **sämtliche Objekttypen** zur Verfügung. Das Verhalten ähnelt dem [kombinierten Immobilientyp-Filter](/installation-konfiguration/backend-konfiguration/filter/filter-widgets/immobilien-typ) weitestgehend, differenziert sich allerdings durch die Aufteilung in Vermarktungsart und Objektart als Auswahlfelder von diesem.

### Konfiguration

:small\_blue\_diamond:`Pflichtfeld`

In der Regel muss der Immobilientyp-Filter nicht als Pflichtfeld deklariert werden.

:small\_blue\_diamond:`Detaillierte Bezeichnung verwenden`

Hier kann eingestellt werden, dass der detaillierte Bezeichner anstelle des normalen Bezeichners eines Objekttypen im Frontend ausgegeben werden soll.

:small\_blue\_diamond:`Label anzeigen`

Hier kann eingestellt werden, ob HTML-Label vor den eigentlichen Auswahlfeldern ausgeliefert werden sollen.


# Primäre Felder

Das `primäre Felder` Widget zeigt dynamisch die Filtermöglichkeiten an, **welche in einem Objekttyp als Suchfelder aktiviert wurden**. Dadurch ist es möglich, genau einzustellen, welche Filtermöglichkeiten bei der Auswahl jedes einzelnen Objekttypen zur Verfügung stehen.

{% hint style="warning" %}
**JavaScript-Template notwendig**

Damit die korrekten Filter automatisch anhand des Objekttypen ausgegeben werden können, muss **im Layout** das "**js\_*****em*****\_filter"** JavaScript-Template **aktiviert werden**.
{% endhint %}

### Anwendungsbeispiel

Die verschiedenen [Objekttypen](/installation-konfiguration/backend-konfiguration/objekttypen/objekttypen) zeichnen sich fachlich durch unterschiedliche Eckdaten und Informationen aus. Alle Objekttypen lassen sich in der Regel anhand des Preises oder der Fläche filtern. Bei Anzahl der Zimmer wird dieser Umstand im Falle von Grundstücken allerdings schwieriger. Bei Gewerbeobjekten ist oftmals der Quadratmeterpreis entscheidend, sodass bei jedem Objekttyp die Filtermöglichkeiten nach Bedarf definiert werden können.

### Konfiguration

:small\_blue\_diamond:`Label anzeigen`

Hier kann eingestellt werden, ob HTML-Label vor den eigentlichen Auswahlfeldern ausgeliefert werden sollen.

:small\_blue\_diamond:`Placeholder anzeigen`

Hier kann angegeben werden, ob Placeholder in den jeweiligen Auswahlfeldern ausgegeben werden sollen.

:small\_blue\_diamond:`Bereichs-Modus`

Hier kann eingestellt werden, dass in einen Bereich von zwei Werten gefiltert werden soll (Von-Bis Suche).


# Zurücksetzen

Über den **Zurücksetzen-Button** können die Filterfelder im Frontend **zurückgesetzt** werden. Optional kann dieser als Bildschaltfläche ausgeliefert werden.

### Konfiguration

:small\_blue\_diamond:`Bezeichnung der Schaltfläche`

Hier kann die Bezeichnung angegeben werden, die der Button im Frontend verwenden soll.

:small\_blue\_diamond:`Bildschaltfläche erstellen`

Ermöglicht die Verwendung einer Bildschaltfläche für den Button.


# Absendefeld

Über den **Absende-Button** kann der Filter im Frontend abgeschickt werden. Optional kann dieser als Bildschaltfläche ausgeliefert werden.

### Konfiguration

:small\_blue\_diamond:`Bezeichnung der Schaltfläche`

Hier kann die Bezeichnung angegeben werden, die der Button im Frontend verwenden soll.

:small\_blue\_diamond:`Bildschaltfläche erstellen`

Ermöglicht die Verwendung einer Bildschaltfläche für den Button.


# Feldformatierungen

Formatierung und Ausgabe der Immobilienfelder

Um Immobilienfelder für die Ausgabe aufzubereiten bietet der EstateManager ein umfangreiches Werkzeug um beliebige Aktionen auf Felder und Werte einer Immobilie anzuwenden.

### Formatierung zurücksetzen

Von Haus aus liefert der EstateManager bereits eine Vorkonfiguration von Feldformatierungen und dessen Aktionen, welche im ersten Schritt oder nach Fehlkonfiguration über den Button "Formatierung zurücksetzen" importiert / zurückgesetzt werden können.

{% hint style="warning" %}
Bitte beachte, dass manuelle Änderungen nach dem zurücksetzen verworfen werden
{% endhint %}

### Feldformatierung erstellen

Über den Button "Neues Feld" können alle Immobilien-Felder, welche in der Datenbank bestehen, ausgewählt und für die Darstellung konfiguriert werden.

:small\_blue\_diamond:`Feld`

*Definiert das Feld, welches durch eine Formatierung vor der Ausgabe formatiert werden soll.*

:small\_blue\_diamond:`CSS-Klasse`

*Jedes Feld kann ein oder mehrere CSS-Klassen beinhalten (Leerzeichen getrennte Liste). Dies ermöglicht die Erstellung eigener Selektoren um diese später mittels CSS aufbereiten zu können.*

:small\_blue\_diamond:`Ausgabe erzwingen`

*Erzwingt die Ausgabe des Feldes, auch wenn kein Wert vorhanden ist.*

Beispiel:

> In den Details sollen "Haustiere" immer ausgegeben werden. Wurde dieser Wert nicht übertragen, sollen wir davon ausgehen, dass das Objekt / die Immobilie keine Haustiere erlaubt. Mit der Einstellung, dass die Ausgabe erzwungen werden soll, würde nun "Haustiere: Nein" ebenfalls ausgegeben und nicht als leerer Wert erkannt und somit in den Details übersprungen werden.

:small\_blue\_diamond:`Bedingung hinzufügen`

*Ermöglicht die Definition einer oder mehrerer Bedingungen. Beim hinzufügen mehrerer Bedingungen werden diese "UND"-Verknüpft abgearbeitet.*

Beispiel:

> Die Breitband-Geschwindigkeit für die Immobilie soll ausschließlich angezeigt werden, wenn die Immobilie auch einen Breitbandanschluss besitzt.

### Formataktionen

Innerhalb eines Feldes können beliebig viele Aktionen für den Wert des Feldes konfiguriert werden. Diese werden dabei in der Reihenfolge abgearbeitet, wie sie in der Liste definiert werden.

{% hint style="warning" %}
**Logische Reihenfolge der Aktionen verwenden:**\
Preis- oder Flächenangaben müssen bspw. vor dem Anhängen von Einheiten wie `€` oder `m²` (Aktion: `append`) den eigentlichen / noch unformatierten Wert formatiert bekommen (Aktion: `number_format`).

*Falsch:*\
:digit\_one: append\
:digit\_two: number\_format

*Richtig:*\
:digit\_one: number\_format\
:digit\_two: append
{% endhint %}

#### Übersicht aller Aktionen

:small\_orange\_diamond:`prepend`

*Fügt einen beliebigen Text vor dem Wert ein.*

:small\_orange\_diamond:`append`

*Fügt einen beliebigen Text nach dem Wert ein.*

:small\_orange\_diamond:`number_format`

*Formatiert einen Zahlenwert anhand der angegebenen Nachkommastellen.*

:small\_orange\_diamond:`date_format`

*Wandelt einen UNIX-Timestamp in ein leserliches Datums-Format um.*

:small\_orange\_diamond:`ucfirst`

*Verwandelt das erste Zeichen eines Strings in einen Großbuchstaben.*

:small\_orange\_diamond:`wrap`

*Umschließt den Wert mit dem angegebenen Text/HTML-Code. Die Verwendung eines* Spezifizierer-*Platzhalters ist dabei zwingend notwendig. (s. "*[*sprintf*](https://www.php.net/manual/de/function.sprintf.php#refsect1-function.sprintf-parameters)*" PHP-Funktion)*

:small\_orange\_diamond:`unserialize`

*Validiert eine in der Datenbank serialisierte Liste und gibt diese anhand des angegebenen Trennzeichens aus.*

:small\_orange\_diamond:`combine`

*Ermöglicht die Kombination beliebiger Felder und die Ausgabe anhand eines Trennzeichens. Um kombinierte Felder nicht doppelt in einer Detailliste auszugeben, können diese über die Checkbox "entfernen" für die spätere Ausgabe übersprungen werden.*

:small\_orange\_diamond:`boolToWord`

*Wandelt Werte mit "0" oder "1" in "Nein" oder "Ja" um.*

:small\_orange\_diamond:`custom`

*Verwendung einer eigenen Funktion. Eigene Funktionen müssen dabei als Template mit dem Präfix "re\_ac\_" angelegt werden.*

Beispiel:

```php
/**
 * $field:                {string}  Name des Feldes
 * $varValue:             {string}  Wert des Feldes
 * $objRealEstate:        {object}  Immobilien-Objekt 
 * $arrRemovedCollection: {array}   Array mit Feldnamen, welche durch diese Funktion im weiteren Verlauf nicht mehr mit ausgegeben werden dürfen
 */
return array('func' => function($field, $varValue, $objRealEstate, &$arrRemovedCollection)
{
    if($field !== 'meinFeld')
    {
        return $varValue;
    }

    // Do something

    return $varValue;
});
```


# Exposé-Module

Exposé-Module deklarieren einzelne Bereiche eines Exposés, welche anschließend über das Modul [Exposé](/installation-konfiguration/frontend-konfiguration/module/expose) eingebunden werden können.

### Verfügbare Exposé-Module

* [Titel](/installation-konfiguration/backend-konfiguration/expose-module/titel)
* [Adresse](/installation-konfiguration/backend-konfiguration/expose-module/adresse)
* [Galerie](/installation-konfiguration/backend-konfiguration/expose-module/galerie)
* [Primäre Details](/installation-konfiguration/backend-konfiguration/expose-module/primaere-details)
* [Primäre Attribute](/installation-konfiguration/backend-konfiguration/expose-module/primaere-attribute)
* [Primärer Preis](/installation-konfiguration/backend-konfiguration/expose-module/primaerer-preis)
* [Primäre Fläche](/installation-konfiguration/backend-konfiguration/expose-module/primaere-flaeche)
* [Status-Token](/installation-konfiguration/backend-konfiguration/expose-module/status-token)
* [Vermarktungs-Token](/installation-konfiguration/backend-konfiguration/expose-module/vermarktungs-token)
* [Texte](/installation-konfiguration/backend-konfiguration/expose-module/texte)
* [Feldliste](/installation-konfiguration/backend-konfiguration/expose-module/feldliste)
* [Kontaktperson](/installation-konfiguration/backend-konfiguration/expose-module/kontaktperson)
* [Anfrageformular](/installation-konfiguration/backend-konfiguration/expose-module/anfrageformular)
* [Teilen](/installation-konfiguration/backend-konfiguration/expose-module/teilen)
* [Drucken](/installation-konfiguration/backend-konfiguration/expose-module/drucken)
* [Anhänge](/installation-konfiguration/backend-konfiguration/expose-module/anhaenge)
* [Eigener HTML-Code](/installation-konfiguration/backend-konfiguration/expose-module/eigener-html-code)

{% hint style="info" %}
Exposé-Module und dessen Einstellungen können durch verschiedene [Erweiterungen](/erweiterungen/erweiterungen) um neue Module und Felder ergänzt werden. Die hier dokumentierten Exposé-Module beinhaltet ausschließlich die vom EstateManager (Core) gelieferten Einstellungsmöglichkeiten. Felder oder Module, welche durch Erweiterungen hinzugefügt wurden, können direkt in der Dokumentation der dafür verantwortlichen Erweiterung eingesehen werden.
{% endhint %}

### Weitere Exposé-Module

Durch verschiedene Erweiterungen können weitere Exposé-Module, oder Ergänzungen der bereits bestehenden, zur Verfügung gestellt werden.

{% content-ref url="/pages/-M50hznuaLyXMun7TnmM" %}
[Erweiterungen](/erweiterungen/erweiterungen)
{% endcontent-ref %}


# Titel

Exposé-Modul

Das `Titel` Exposé-Modul liefert den Titel der Immobilie aus.

### Einstellungen

:small\_blue\_diamond:`Schriftgröße`

*Definiert die Größe / Überschrift des Titels*

### Template

:small\_orange\_diamond:`expose_mod_title`


# Adresse

Exposé-Modul

Das `Adresse` Exposé-Modul liefert die Adresse der Immobilie aus.‌ Dabei wird berücksichtigt, ob die Adresse der Immobilie, wie im OpenImmo Standard definiert, freigegeben wurde.

### Einstellungen

:small\_blue\_diamond:`Vollständige Adresse erzwingen`

*Es wird die vollständige Adresse auszugeben, unabhängig ob diese freigegeben wurde oder nicht.*

### Template

:small\_orange\_diamond:`expose_mod_address`


# Galerie

Exposé-Modul

Das `Galerie` Exposé-Modul liefert die Bilder einer Immobilie unter Berücksichtigung der gewählten Galerie-Kategorien aus. Dabei stehen folgende Kategorien im Standard zur Verfügung:

* Titelbild
* Bilder
* Grundrisse
* Interior-Bilder
* Exterior-Bilder
* Kartenansicht
* Panorama
* Energieskala
* Logo
* QR-Code

### Einstellungen

:small\_blue\_diamond:`Galerie-Kategorien`

*Hier können die Kategorien, welche ausgegeben werden dürfen, sowie die Reihenfolge definiert werden.*

:small\_blue\_diamond:`Gesamtzahl der Elemente`

*Definiert die maximale Anzahl an Elementen / Bildern.*

:small\_blue\_diamond:`Großansicht/Neues Fenster`

*Großansicht des Bildes in einer "Lightbox" bzw. den Link in einem neuem Browserfenster öffnen. Die Initialisierung einer "Lightbox" muss dabei eigenständig eingerichtet werden.*

:small\_blue\_diamond:`Ausblenden wenn keine Inhalte angezeigt werden können`

Verhindert die Ausgabe des Exposé-Moduls, sofern keine Elemente / Bilder in den gewählten Kategorien gefunden wurden. Andernfalls wird immer das in den [Einstellungen](/installation-konfiguration/backend-konfiguration/einstellungen) hinterlegte Standard-Bild ausgegeben.

### Templates

:small\_orange\_diamond:`expose_mod_gallery`

:small\_orange\_diamond:`expose_mod_gallery_items`

{% hint style="success" %}
Auf diesem Exposé-Modul können beliebige JavaScript-Slider initialisiert werden um die Bilder, wie man es von vielen anderen Webseiten kennt, als Bilder-Diashow o.ä. darstellen zu lassen.
{% endhint %}


# Details

Exposé-Modul

Das `Details` Exposé-Modul liefert alle möglichen Werte der Immobilie aus. Folgende Detail-Kategorien stehen dabei zur Verfügung:

* Flächen
* Preise
* Attribute
* Details
* Energieausweis

### Einstellungen

:small\_blue\_diamond:`Detail-Kategorien`

*Detail-Kategorien definieren Unterteilungen von Immobilien-Eigenschaften wie `Flächen`, `Preise`, `Attribute`, `Details` und `Energieausweis`-Informationen. Über diese Einstellung können alle oder nur bestimmte dieser Kategorien ausgegeben werden. Die Reihenfolge der Ausgabe dieser Kategorien kann dabei ebenfalls definiert werden.*

:small\_blue\_diamond:`Detail-Kategorien zusammenfassen`

*Gruppiert alle Kategorien für die Ausgabe in einer Liste. Andernfalls werden diese in einzelnen Blöcken (je Kategorie) ausgegeben.*

:small\_blue\_diamond:`Immobilien-Adresse hinzufügen`

*Fügt die Adresse der Immobilie zur Liste hinzu. Dabei wird berücksichtigt, ob die Adressfreigabe erlaubt ist.*

:small\_blue\_diamond:`Überschriften ausgeben`

*Gibt die Überschriften der einzelnen Kategorien oder der gesammelten Detailliste aus.*

:small\_blue\_diamond:`Schriftgröße`

*Sofern Überschriften ausgegeben werden sollen, kann über diese Einstellung die Schriftgröße definiert werden.*

:small\_blue\_diamond:*Individuelle Feldsortierung*

*Hier kann die Reihenfolge der Felder für die Ausgabe individuell definiert werden. Bei Angabe einer individuellen Feldreihenfolge innerhalb der Objekttypen werden diese überschrieben.*

{% hint style="info" %}
*Die Einstellung "Individuelle Feldsortierung" steht erst ab Version 2.0 zur Verfügung.*
{% endhint %}

### Template

:small\_orange\_diamond:`expose_mod_details`


# Primäre Details

Exposé-Modul

Für jeden [Objekttypen](/installation-konfiguration/backend-konfiguration/objekttypen) können mehrere primäre Details definiert werden. Das Exposé Modul `Primäre Details` prüft diese Felder und gibt sie anschließend aus.

### Einstellungen

:small\_blue\_diamond:`Gesamtzahl der Elemente`

*Definiert die maximale Anzahl an primären Details unabhängig davon, was in den Einstellungen definiert wurde.*

### Template

:small\_orange\_diamond:`expose_mod_mainDetails`


# Primäre Attribute

Exposé-Modul

Für jeden [Objekttypen](/installation-konfiguration/backend-konfiguration/objekttypen) können mehrere primäre Attribute definiert werden. Das Exposé Modul `Primäre Attribute` prüft diese Felder und gibt sie anschließend aus.

### Einstellungen

:small\_blue\_diamond:`Gesamtzahl der Elemente`

*Definiert die maximale Anzahl an primären Attributen unabhängig davon, was in den Einstellungen definiert wurde.*

### Template

:small\_orange\_diamond:`expose_mod_mainAttributes`


# Primärer Preis

Exposé-Modul

Das Exposé-Modul `Primärer Preis` prüft und liefert den im [Objekttypen](/installation-konfiguration/backend-konfiguration/objekttypen) definierten Preis aus.

### Template

:small\_orange\_diamond:`expose_mod_mainPrice`


# Primäre Fläche

Exposé-Modul

Das Exposé-Modul `Primärer Fläche` prüft und liefert die im [Objekttypen](/installation-konfiguration/backend-konfiguration/objekttypen) definierte Fläche aus.

### Template

:small\_orange\_diamond:`expose_mod_mainArea`


# Status-Token

Exposé-Modul

Das Exposé-Modul `Status-Token` gibt alle vorhandenen Status-Token einer Immobilie aus. Dabei stehen folgende Status-Token zur Verfügung:

* Neu
* Reserviert
* Vermietet
* Verkauft

### Einstellungen

:small\_blue\_diamond:`Erlaubte Status-Token`

*Begrenzt die Ausgabe auf nur ausgewählte Token.*

### Template

:small\_orange\_diamond:`expose_mod_statusToken`


# Vermarktungs-Token

Exposé-Modul

Das Exposé-Modul `Vermarktungs-Token` liefert die in der Immobilie definierten Vermarktungsart aus (z.B. kauf, miete).

### Template

:small\_orange\_diamond:`expose_mod_marketingToken`


# Texte

Exposé-Modul

Das Exposé-Modul `Texte` liefert die in der Immobilie vorhandenen Beschreibungstexte aus. Folgende Text-Blöcke stehen dabei zur Verfügung:

* Beschreibung
* Ausstattung
* Lage
* Sonstige Angaben
* Immobilientext
* Kurzbeschreibung

### Einstellungen

:small\_blue\_diamond:`Texte`

*Hier können die anzuzeigenden Text-Blöcke sowie dessen Reihenfolge definiert werden.*

:small\_blue\_diamond:`max. Textlänge`

*Geben Sie eine Zahl an, um den Text an einer gewünschten Stelle zu kürzen. Bei Angabe von 0 wird der Text ungekürzt ausgegeben.*

:small\_blue\_diamond:`Überschriften ausgeben`

*Gibt die Überschriften der einzelnen Text-Blöcke aus.*

:small\_blue\_diamond:`Schriftgröße`

*Sofern Überschriften ausgegeben werden sollen, kann über diese Einstellung die Schriftgröße definiert werden.*

:small\_blue\_diamond:`Ausblenden bei keinen Ergebnissen`

*Sollten keine Texte vorhanden sein / ausgegeben werden können, kann mit dieser Einstellung das gesamte Modul ausgeblendet werden.*

### Templates

:small\_orange\_diamond:`expose_mod_texts`


# Feldliste

Exposé-Modul

Das Exposé-Modul `Feldliste` ermöglicht die Ausgabe einer Liste von selbst definierten Feldern. Dabei stehen alle Datenbankfelder zur Verfügung.

{% hint style="warning" %}
Um alle Details einer Immobilie auszugeben, wird dringend empfohlen, das Exposé-Modul "[Details](/installation-konfiguration/backend-konfiguration/expose-module/details)" zu verwenden.
{% endhint %}

### Einstellungen

:small\_blue\_diamond:`Feldliste`

*Ermöglicht die Auswahl beliebig vieler Felder, welche in einer Liste ausgegeben werden sollen.*

### Template

:small\_orange\_diamond:`expose_mod_fieldList`


# Kontaktperson

Exposé-Modul

Das Exposé-Modul `Kontaktperson` ermöglicht die Ausgabe der in der Immobilie zugewiesenen Kontaktperson.

### Einstellungen

:small\_blue\_diamond:`Felder`

*Die anzuzeigenden Kontaktpersonen-Informationen wie `Name`, `E-Mail` oder Orts-Informationen.*

:small\_blue\_diamond:`Vollständige Adresse erzwingen`

*Nicht nur für Immobilien, sondern auch für Kontaktpersonen muss die Adresse nicht zwingend freigegeben sein. Abweichend von der Einstellung innerhalb einer Immobilie, kann hier immer die vollständige Adresse erzwungen werden.*

:small\_blue\_diamond:`Anbieter Weiterleitungsmodus verwenden`

*Der Weiterleitungsmodus innerhalb einer Kontaktperson, ermöglicht die Manipulation der Felder, die für eine Anfrage der Immobilie wichtig sind. Sollte im Weiterleitungsmodus des Anbieters nur der Anbieter selber berücksichtigt werden, werden statt der E-Mail und der Telefonnummer der Kontaktperson, die des Anbieters ausgegeben.*

:small\_blue\_diamond:`Bilgröße`

*Über die "Felder" kann ebenfalls das Foto einer Kontaktperson angewählt werden. Mit dieser Einstellung kann die Bildgröße definiert werden.*

### Templates

:small\_orange\_diamond:`expose_mod_contactPerson`


# Anfrageformular

Exposé-Modul

Das Exposé-Modul `Anfrageformular` inkludiert ein Formular aus dem Formulargenerator und liefert dieses innerhalb eines [Exposés](/installation-konfiguration/frontend-konfiguration/module/expose) aus.

### Einstellungen

:small\_blue\_diamond:`Formular`

*Hier kann das im* [*Formulargenerator* ](https://docs.contao.org/manual/de/formulargenerator/)*erstellte Formular ausgewählt werden.*

:small\_blue\_diamond:`Für Referenzen ausblenden`

*Beim anwählen dieser Einstellung wird das Modul für Referenz-Immobilien nicht ausgeliefert.*

### Templates

:small\_orange\_diamond:`expose_mod_enquiryForm`


# Teilen

Exposé-Modul

Das Exposé-Modul `Teilen` ermöglicht das hinzufügen von verschiedenen "Teilen"-Option. Dafür stehen folgende Arten zur Verfügung:

* E-Mail

### Einstellungen

:small\_blue\_diamond:`Teilen über`

*Hier können die einzelnen Arten zum Teilen angewählt werden.*

### Template

:small\_orange\_diamond:`expose_mod_share`

:small\_orange\_diamond:`expose_mod_share_email`


# Drucken

Exposé-Modul

Das Exposé-Modul `Durcken` liefert eine Schaltfläche aus mit der der "Drucken"-Dialog geöffnet werden kann.

### Template

:small\_orange\_diamond:`expose_mod_print`


# Anhänge

Exposé-Modul

Das Exposé-Modul `Anhänge` ermöglicht den Download / die Weiterleitung von Immobilien-Anhängen.

### Einstellungen

:small\_blue\_diamond:`Anhang-Typ`

*Definiert welche Anhänge einer Immobilie ausgegeben werden sollen. Dabei stehen die Optionen `Dokumente` und `Links` zur Verfügung.*&#x20;

:small\_blue\_diamond:`Erlaubte Dateiendungen`

*Ermöglicht die Einschränkung von Dateiendungen (Anhang-Typ: `Dokumente`). Dabei müssen die erlaubten Dateiendungen als Komma getrennte Liste angegeben werden.*

:small\_blue\_diamond:*`Download erzwingen`*

*Erzwingt den Download von Dokumenten (Anhang-Typ: `Dokumente`).*&#x20;

### Template

:small\_orange\_diamond:`expose_mod_attachments`


# Eigener HTML-Code

Exposé-Modul

Das Exposé-Modul `Eigener HTML-Code` ermöglicht das Einbetten von eigenem HTML-Code.

### Einstellungen

:small\_blue\_diamond:`HTML-Code`

### Template

:small\_orange\_diamond:`expose_mod_html`


# Frontend-Konfiguration

Alle Module und dessen Komponenten können beliebig platziert werden. Dabei ist zu beachten, dass der EstateManager ausschließlich für die strukturelle Ausgabe, der Datenaufbereitung und Funktionalität fungiert. Es werden keine CSS-Eigenschaften oder andere Stilelemente ausgegeben, diese müssen selbstständig über Contao-Themes oder ähnlichen implementiert werden.

### Frontend-Konfigurationen

* [Module](/installation-konfiguration/frontend-konfiguration/module)
* [Insert-Tags](/installation-konfiguration/frontend-konfiguration/insert-tags)


# Module

### Verfügbare Module

* [Immobilien-Liste](/installation-konfiguration/frontend-konfiguration/module/liste)
* [Immobilien-Ergebnisliste](/installation-konfiguration/frontend-konfiguration/module/ergebnisliste)
* [Immobilien-Exposé](/installation-konfiguration/frontend-konfiguration/module/expose)

### Weitere Module

Durch verschiedene Erweiterungen können weitere Module zur Verfügung gestellt werden.

{% content-ref url="/pages/-M50hznuaLyXMun7TnmM" %}
[Erweiterungen](/erweiterungen/erweiterungen)
{% endcontent-ref %}


# Immobilien-Liste

Das `Immobilien-Liste`-Modul liefert den Einstellungen entsprechend eine Liste von Immobilien aus.

### Einstellungen

:small\_blue\_diamond:`Gesamtanzahl der Beiträge`

*Hier können die auszugebenden Immobilien begrenzt werden.*

:small\_blue\_diamond:`Elemente pro Seite`

*Die Anzahl an Elementen pro Seite.*

:small\_blue\_diamond:`Leere Listen ausgeben`

*Sollte für die aktuelle Konfiguration der Liste keine Immobilie gefunden werden, kann die Liste mit dieser Einstellung dennoch ausgegeben werden.*

:small\_blue\_diamond:`Ausgabe-Modus`

*Der Ausgabe-Modus bietet die Möglichkeit die Immobilien-Typen der Ausgabe wie bspw. `Bisher besuchte Immobilien`, eine `Immobilien-Gruppe` oder `Ferienimmobilien` zu definieren.*

:small\_blue\_diamond:`Immobilien-Gruppen`

*Auswahl der anzuzeigenden Immobilien-Gruppen.*

:small\_blue\_diamond:`Filter-Modus`

*Über den Filter-Modus kann die Liste auf einen bestimmten Typ an Immobilien begrenzt werden.*

:small\_blue\_diamond:`Sortierreihenfolge`

*Definiert die Reihenfolge wie die Immobilien ausgegeben werden. Bspw. nach `Einstellungsdatum` oder `Aktualität`.*

:small\_blue\_diamond:*`Benutzerdefinierte Sortierung hinzufügen`*

*Ermöglicht die Ergänzung einer benutzerdefinierten Sortierung.*

:small\_blue\_diamond:`Benutzerdefinierte Sortierung`

*Hier muss das Benutzerdefinierte SQL-Order-Statement eingetragen werden (z.B. FIELD(anbieternr, 'xyz')). Bitte beachte, dass die zuvor über das Feld* `Sortierreihenfolge` ausgewählte Eigenschaft immer mit Priorität behandelt wird.

:small\_blue\_diamond:`Weiterleitungsseite`

*Die Seite auf welche bei Klick auf einer Immobilie weitergeleitet werden soll.*

:small\_blue\_diamond:`Erlaubte Status-Token`

*Definiert die anzuzeigenden Status-Token in diesem Modul.*

### Immobilien-Erweiterungen

Immobilien-Erweiterungen ermöglichen bspw. die Ausgabe des `Anbieters` oder der zugewiesenen `Kontaktperson` pro Immobilie. Durch Erweiterungen kann dieser Bereich um weitere Funktionalitäten ergänzt werden (s. bspw. [Merkzettel](/erweiterungen/erweiterungen/merkzettel)).

### Templates

:small\_orange\_diamond:`mod_realEstateList`

**Immobilien-Templates**

:small\_orange\_diamond:`real_estate_item_default`

:small\_orange\_diamond:`real_estate_item_simple`

#### Immobilien Template Erweiterung: Anbieter

:small\_orange\_diamond:`real_estate_itemext_provider_default`

#### Immobilien Template Erweiterung: Kontaktperson

:small\_orange\_diamond:`real_estate_itemext_contact_person_default`


# Immobilien-Ergebnisliste

Das `Immobilien-Ergebnislisten`-Modul liefert den Einstellungen entsprechend eine Liste von Immobilien unter Berücksichtigung eines [Filters](/installation-konfiguration/backend-konfiguration/filter) aus.

### Einstellungen

:small\_blue\_diamond:`Gesamtanzahl der Beiträge`

*Hier können die auszugebenden Immobilien begrenzt werden.*

:small\_blue\_diamond:`Elemente pro Seite`

*Die Anzahl an Elementen pro Seite.*

:small\_blue\_diamond:`Immobilien-Gruppen`

*Auswahl der anzuzeigenden Immobilien-Gruppen.*

:small\_blue\_diamond:`Filter-Modus`

*Über den Filter-Modus kann die Liste auf einen bestimmten Typ an Immobilien begrenzt werden.*

:small\_blue\_diamond:`Anzahl der Immobilien ausgeben`

*Gibt die Anzahl gefundener Immobilien unter Berücksichtigung der Filtereinstellungen aus.*

:small\_blue\_diamond:`Sortierung hinzufügen`

*Definiert die Reihenfolge wie die Immobilien ausgegeben werden. Bspw. nach `Datum`.*

:small\_blue\_diamond:*`Benutzerdefinierte Sortierung hinzufügen`*

*Ermöglicht die Ergänzung einer benutzerdefinierten Sortierung.*

:small\_blue\_diamond:`Benutzerdefinierte Sortierung`

*Hier muss das Benutzerdefinierte SQL-Order-Statement eingetragen werden (z.B. FIELD(anbieternr, 'xyz')). Bitte beachte, dass die zuvor über das Feld* `Sortierreihenfolge` ausgewählte Eigenschaft immer mit Priorität behandelt wird.

:small\_blue\_diamond:`Weiterleitungsseite`

*Die Seite auf welche bei Klick auf einer Immobilie weitergeleitet werden soll.*

:small\_blue\_diamond:`Erlaubte Status-Token`

*Definiert die anzuzeigenden Status-Token in diesem Modul.*

### Immobilien-Erweiterungen

Immobilien-Erweiterungen ermöglichen bspw. die Ausgabe des `Anbieters` oder der zugewiesenen `Kontaktperson` pro Immobilie. Durch Erweiterungen kann dieser Bereich um weitere Funktionalitäten ergänzt werden (s. bspw. [Merkzettel](/erweiterungen/erweiterungen/merkzettel)).

### Templates

:small\_orange\_diamond:`mod_realEstateResultList`

**Immobilien-Templates**

:small\_orange\_diamond:`real_estate_item_default`

:small\_orange\_diamond:`real_estate_item_simple`

#### Immobilien Template Erweiterung: Anbieter

:small\_orange\_diamond:`real_estate_itemext_provider_default`

#### Immobilien Template Erweiterung: Kontaktperson

:small\_orange\_diamond:`real_estate_itemext_contact_person_default`


# Immobilien-Exposé

Das `Immobilien-Exposé` Modul ermöglicht die Zusammenfassung und Ausgabe der Exposé-Module um eine Immobilien im Detail zu präsentieren.

### Einstellungen

:small\_blue\_diamond:`Exposé-Module`

*Hier können die zuvor unter* [*Exposé-Module*](/installation-konfiguration/backend-konfiguration/expose-module) *definierten Module in beliebiger Reihenfolge ausgewählt und in die für ein Exposé vordefinierten Layoutbereiche eingefügt werden.*

:small\_blue\_diamond:`Referenzen erlauben`

*Erlaubt die Darstellung von Referenz-Immobilien in diesem Modul*

### Layoutbereiche

Das `Immobilien-Exposé` Modul liefert eigene Layoutbereiche, welche über das Exposé-Module Feld befüllt werden können. Folgende Layoutbereiche stehen dabei zur Verfügung.

:one: Kopfzeile \
:digit\_two: Über dem Inhaltsbereich\
:three: Linke Spalte\
:four: Hauptspalte\
:five: Rechte Spalte\
:digit\_six: Unter dem Inhaltsbereich\
:seven: Fußzeile

![Exposé-Modul - Layoutbereiche](/files/-M5RpJl0-ejHdAfHmVIS)

{% hint style="info" %}
Layoutbereiche bilden ausschließlich die Struktur der Ausgabe ab. Die Anordnung und dessen Darstellung müssen selber über CSS definiert werden.
{% endhint %}

### Template

:small\_orange\_diamond:`mod_realEstateExpose`


# Insert-Tags

### Abruf von Feldern einer speziellen Immobilie

`{{realestate::ID::FIELD}}`

:small\_blue\_diamond:`<int> ID`

*ID der abzufragenden Immobilie*

:small\_blue\_diamond:`<string> FIELD`

*Die abzufragende* [*Immobilien-Eigenschaft*](/entwickler/immobilien-eigenschaften)*.*

{% code title="Beispiel" %}

```markup
{{realestate::5::objekttitel}}
```

{% endcode %}

### Abruf von Feldern der aktuellen Immobilie innerhalb eines Exposés

`{{realestate::FIELD}}`

:small\_blue\_diamond:`<string> FIELD`

*Die abzufragende* [*Immobilien-Eigenschaft*](/entwickler/immobilien-eigenschaften)*.*

{% code title="Beispiel" %}

```markup
{{realestate::objekttitel}}
```

{% endcode %}


# Installation

Die Installation der [Erweiterungen](/erweiterungen/erweiterungen) für den EstateManager unterscheidet sich grundsätzlich nicht zu der Installation des EstateManagers selber. Für weitere Informationen folge bitte den Anweisungen der Dokumentation der zu installierenden Erweiterung.

{% hint style="warning" %}
Nach Eintragen der Lizenzen muss eine erneute Datenbank-Migration durchgeführt werden.
{% endhint %}

{% content-ref url="/pages/-M50hznuaLyXMun7TnmM" %}
[Erweiterungen](/erweiterungen/erweiterungen)
{% endcontent-ref %}


# Import

## Einleitung

Der bisher im Core enthaltene **Immobilien-Importer** wurde entfernt und ist nun als **Add-on im Abonnement** verfügbar. Der Import basiert auf der Anzahl der bereits im System befindlichen Immobilien.

Das Abo-Modell ist entscheidend, um die Weiterentwicklung des EstateManagers zu fördern und die Nachhaltigkeit des Projekts zu gewährleisten.

***

## Einrichtung

1. Schließen Sie ein Abo auf [contao-estatemanager.com](https://www.contao-estatemanager.com/de/store/openimmo-import.html) ab.
2. Der Download der Add-on-Erweiterung wird innerhalb von **2 Werktagen** im internen Bereich als Download freigeschaltet.
3. Installation der Add-on-Erweiterung über den Contao-Manager via Drag-and-Drop
4. Nach der Installation kann im Contao-Backend unter **Estatemanager → Verwaltung → Add-Ons → Lizenzen verwalten**, die erworbene Lizenz unter *Addon Import Lizenz* eingetragen werden.
5. Anschließend muss der **Anwendungs-Cache** (z. B. über den Contao-Manager) geleert werden.

***

## Upgrade

* Für ein Upgrade eines Abonnements muss das vorherige Abo über **Paddle** gekündigt werden.
* Nach Abschluss des neuen Abonnements für ein größeres Paket wird ein neuer Lizenzschlüssel generiert.
* Folgen Sie hierbei erneut den Schritten unter *Einrichtung*.

***

## Fehlermeldungen

### „Verbindung fehlgeschlagen! Bitte in der Dokumentation nachschlagen.“

Mögliche Ursachen:

* Die beim Abschluss des Abonnements eingetragene Domain stimmt nicht überein.
* Der Lizenzschlüssel ist nicht valide oder wurde falsch eingetragen.
* Eine Verbindung zwischen dem Shop und der Webseite konnte nicht hergestellt werden
  * Seite gesperrt
  * Wartungsmodus eingeschaltet
  * falsch konfigurierte Weiterleitungen, beispielsweise fehlerhaft auf `www.`. [htaccess Validator](https://htaccess.madewithlove.com/)
  * etc.

Um eine erneute Verbindung nach Behebung des Fehelrs zu testen, muss der **Anwendungscache** erneut geleert werden.

***

### „Limit erreicht“

Mögliche Ursachen:

* Das bestellte Abonnement ist zu klein für die Anzahl der Immobilien.

Beispiele:

* 17 veröffentlichte Immobilien – Abonnement von 10 Immobilien
  * **Importer wird deaktiviert**, es müssen Immobilien gelöscht werden.
* 9 veröffentlichte Immobilien – Abonnement von 10 Immobilien, 2 Immobilien in einer Übertragung
  * **Teilimport**, nur eine Immobilie wird importiert.

***

## Weitere Hinweise

* Falscheingaben von Lizenzschlüsseln und manuelles Synchronisieren führen zur Deaktivierung des Imports. → Der Import muss über **Estatemanager → Verwaltung → Einstellungen → Import deaktivieren** wieder freigeschaltet werden.
* Missbrauchsversuche von Importen mit falschen oder keinem Lizenzschlüssel werden protokolliert.
* Sofern ein Abonnement gekündigt wird und abläuft, wird der Importer nach einiger Zeit **automatisch deaktiviert**.


# Lizenzen

Für die Verwendung einiger Erweiterungen wird eine Lizenz benötigt. Wie du Lizenzen erwirbst und diese anschließend in Contao aktivierst, erfährst du in diesem Beitrag.

{% hint style="info" %}
Alle Lizenzen gelten **lediglich für eine Major** einer Erweiterung. Für jede Major muss eine neue Lizenz erworben werden.
{% endhint %}

### Lizenz erwerben

Um eine Lizenz zu erwerben, muss die gewünschte Erweiterung über den [Erweiterungskatalog](https://www.contao-estatemanager.com/de/store.html) bestellt werden. Über die [Kundeninfo-Seite](https://www.contao-estatemanager.com/de/Kundeninfo.html) der [Homepage](https://www.contao-estatemanager.com/) des EstateManagers erfährst du weitere Details zum Bestellprozess.

### Lizenzen aktivieren

Gehe zunächst über die Contao-Hauptnavigation im Reiter "**Immobilien**" auf "**Verwaltung**". Hier findest du die Schaltfläche **"Lizenzen verwalten**". Sofern die Erweiterung [installiert](/erweiterungen/installation) ist, erscheint in diesem Bereich nun ein Eingabefeld um die vorher erworbene Lizenz einzutragen. Nach einem Klick auf "**Speichern**" wird das Feld `grün`, `orange` oder `rot` markiert.

* `grün` = Die Lizenz ist gültig
* `orange` = Demo der Erweiterung läuft bald ab (Nur Version 1.x)
* `rot` = Lizenz ungültig / Demo abgelaufen

{% hint style="warning" %}
Je nach Contao-Version muss nach der Eingabe der Lizenz anschließend das Installtool erneut aufgerufen werden.
{% endhint %}

### Demozugang aktivieren

{% hint style="danger" %}
Aufgrund der Tatsache, dass die kostenpflichtigen Erweiterungen nicht mehr Open Source sind,\
stehen Demo-Zugänge ab Version 3.0 nicht mehr zur Verfügung.
{% endhint %}

Erweiterungen können einen Demozugang beinhalten (abhängig vom Anbieter der Erweiterung). Dieser ist nach der Aktivierung für 2 Wochen gültig. Um den Demozugang zu aktivieren, geben Sie in das entsprechende Lizenz-Feld der zu testenden Erweiterung das Wort "**DEMO**" ein und speichern Sie anschließend.

{% hint style="info" %}
Demozugänge können nur einmalig verwendet werden und laufen automatisch ab.
{% endhint %}


# Erweiterungen


# Merkzettel

Contao EstateManager Erweiterung

![](/files/-M78G3iMhV0ejmTvA0kn)

Die `Merkzettel` Erweiterung integriert die Möglichkeit sich, als Besucher der Webseite einzelne Immobilien in einem ausschließlich für den Besucher sichtbaren Merkzettel zu speichern. Diese werden dabei vorerst für die laufende Session beibehalten. Sofern es einen internen Bereich für Besucher gibt, können die auf dem Merkzettel gespeicherten Immobilien nach dem Login dauerhaft im `Mitglied` - Datensatz gespeichert werden, bis diese wieder manuell vom Besucher aus dem Merkzettel entfernt werden.

### Installation

{% tabs %}
{% tab title="Composer" %}

```bash
$ composer require contao-estatemanager/watchlist
```

{% endtab %}

{% tab title="Contao-Manager" %}
Über die Suche des Contao-Manager kann der Begriff `EstateManager` oder `watchlist` gesucht werden. Anschließen wählt man das Paket `Contao EstateManager Watchlist` über die Schaltfläche "*hinzufügen*" aus und klickt zum installieren über den Reiter "*Pakete*" auf die Schaltfläche "*Änderungen anwenden*". Eine detaillierte Anleitung wie man mit dem Contao-Manager arbeitet findest du [hier](https://docs.contao.org/manual/de/installation/erweiterungen-installieren/).
{% endtab %}

{% tab title="GitHub" %}
Installation direkt über GitHub:

<https://github.com/contao-estatemanager/watchlist>
{% endtab %}
{% endtabs %}

Nach der Installation muss das [Contao-Installtool](https://docs.contao.org/manual/de/installation/contao-installtool/) aufgerufen und die Datenbank aktualisiert werden.&#x20;

### Module

Hier finden Sie eine Übersicht neuer (🟢), sowie erweiterte (🔵) Module.

{% tabs %}
{% tab title="🟢 Merkzettel Weiterleitung" %}
Das Modul `Merkzettel Weiterleitung` dient dazu, eine Weiterleitung auf eine beliebige Seite einzurichten, auf der der Besucher seine gemerkten Immobilien sichten oder entfernen kann.&#x20;

**Einstellungen**

:small\_blue\_diamond:`Weiterleitungsseite`

*Die zu Referenzierende Seite*

:small\_blue\_diamond:`Anzahl ausgeben`

*Gibt die Anzahl der sich auf dem Merkzettel befindenden Immobilien aus*

**Template**

:small\_orange\_diamond:`mod_watchlistRedirector`
{% endtab %}

{% tab title="🔵 Liste" %}
Erweitert die [Liste](/installation-konfiguration/frontend-konfiguration/module/liste) um folgende Einstellungen.

**Einstellungen**

:small\_blue\_diamond:`Merkzettel hinzufügen`

*Fügt für jeder Immobilie in der Liste die Merkzettel-Schaltfläche hinzu. Die neue Einstellung befindet sich in der Palette `Immobilien Erweiterung` .*

**Template**

:small\_orange\_diamond:`real_estate_itemext_watchlist_default`

*Das Template muss über das Feld `Immobilien Template Erweiterung: Merkzettel`in der Palette `Templates-Einstellungen` ausgewählt werden.*
{% endtab %}

{% tab title="🔵 Ergebnisliste" %}
Erweitert die [Ergebnisliste](/installation-konfiguration/frontend-konfiguration/module/ergebnisliste) um folgende Einstellungen.

**Einstellungen**

:small\_blue\_diamond:`Merkzettel hinzufügen`

*Fügt für jeder Immobilie in der Liste die Merkzettel-Schaltfläche hinzu. Die neue Einstellung befindet sich in der Palette `Immobilien Erweiterung` .*

**Template**

:small\_orange\_diamond:`real_estate_itemext_watchlist_default`

*Das Template muss über das Feld `Immobilien Template Erweiterung: Merkzettel`in der Palette `Templates-Einstellungen` ausgewählt werden.*
{% endtab %}
{% endtabs %}

### Exposé-Module

Hier finden Sie eine Übersicht neuer (🟢) und erweiterte (🔵) Exposé-Module.

{% tabs %}
{% tab title="🟢 Merkzettel" %}
Das Exposé-Modul `Merkzettel` ermöglicht die Ausgabe einer Schaltfläche, um die Immobilie direkt aus dem Exposé heraus auf dem Merkzettel zu speichern.

**Template**

:small\_orange\_diamond:`expose_mod_watchlist`
{% endtab %}
{% endtabs %}

### JavaScript-Templates

Hier finden Sie eine Übersicht neuer JavaScript-Templates.

{% tabs %}
{% tab title="🟢 Merkzettel" %}
Um die Seite bei Klick der oben gelieferten Merkzettel-Schaltfläche nicht neu laden zu müssen, liefert diese Erweiterung ebenfalls ein neues JS-Template aus, welches unter Layouts zur Verfügung gestellt wird.

**Template**

:small\_orange\_diamond:`js_realestatewatchlist`

**Events**

Um von außen auf einen Statuswechsel des Merkzettels Einfluss nehmen zu können, werden zwei `CustomEvents` registriert und können nach Bedarf entgegengenommen werden.

* `watchlist.onChange`
* `watchlist.onDelete`

```javascript
// Listen to the deletion of properties from the watchlist
document.addEventListener('watchlist.onDelete', function(e){
    // Do something
    console.log(e.detail);
});

// Listen to the adding of properties on the watchlist
document.addEventListener('watchlist.onChange', function(e){
    // Do something
    console.log(e.detail);
});
```

{% hint style="warning" %}
Um Immobilien asynchron aus einer Liste zu *entfernen*, ist es derzeit noch notwendig, dieser oder einem darüber liegenden Element die CSS-Klasse **`delete-list`** zu geben.
{% endhint %}
{% endtab %}
{% endtabs %}

### Lizenz

Für diese Erweiterung ist eine Lizenz erforderlich. Zum Erwerb einer Lizenz, folge bitte den Schritten unter [Lizenzen](/erweiterungen/lizenzen).


# Ähnliche Objekte

Contao EstateManager Erweiterung

![](/files/-M78GUTgUjzKiJ7iTvS-)

Die `Ähnliche Objekte` Erweiterung integriert die Möglichkeit, ähnliche Immobilien innerhalb eines Exposés zu filtern und auszugeben. Dabei können die Immobilien-Eigenschaften der derzeit betrachteten Immobilie für die Abfrage weiterer Objekte durch einen prozentualen Faktor vergröbert werden.

### Installation

{% tabs %}
{% tab title="Composer" %}

```bash
$ composer require contao-estatemanager/similar
```

{% endtab %}

{% tab title="Contao-Manager" %}
Über die Suche des Contao-Manager kann der Begriff `EstateManager` oder `similar` gesucht werden. Anschließen wählt man das Paket `Contao EstateManager Similar` über die Schaltfläche "*hinzufügen*" aus und klickt zum installieren über den Reiter "*Pakete*" auf die Schaltfläche "*Änderungen anwenden*". Eine detaillierte Anleitung wie man mit dem Contao-Manager arbeitet findest du [hier](https://docs.contao.org/manual/de/installation/erweiterungen-installieren/).
{% endtab %}

{% tab title="GitHub" %}
Installation direkt über GitHub:

<https://github.com/contao-estatemanager/similar>
{% endtab %}
{% endtabs %}

Nach der Installation muss das [Contao-Installtool](https://docs.contao.org/manual/de/installation/contao-installtool/) aufgerufen und die Datenbank aktualisiert werden.&#x20;

### Exposé-Module

Hier finden Sie eine Übersicht neuer (🟢) und erweiterte (🔵) Exposé-Module.

{% tabs %}
{% tab title="🟢 Ähnliche Objekte" %}
**Einstellungen**

:small\_blue\_diamond:`Weiterleitungsseite`

*Definiert die Seite, auf die bei Klick einer Immobilie geleitet werden soll.*

:small\_blue\_diamond:`Gesamtanzahl der Elemente`

*Hier können die auszugebenden Immobilien begrenzt werden.*

:small\_blue\_diamond:`Elemente pro Seite`

*Die Anzahl an Elementen pro Seite.*

:small\_blue\_diamond:`Filter vergröbern`

*Hier können Sie einen Wert in Prozent eintragen, um den die Suche vergröbert werden soll.*

:small\_blue\_diamond:`Maximale Entfernung`

*Hier können Sie den Radius in km eingeben, in welchem ähnliche Immobilien berücksichtigt werden.*

:small\_blue\_diamond:`Ausblenden bei keinen Ergebnissen`

*Dieses Modul wird nur ausgegeben wenn Ergebnisse für die Darstellung gefunden wurden.*

:small\_blue\_diamond:`Bildgröße`

*Hier können Sie die Abmessungen der Bilder und den Skalierungsmodus festlegen.*

**Template**

:small\_orange\_diamond:`expose_mod_similar`
{% endtab %}
{% endtabs %}

### Lizenz

Für diese Erweiterung ist eine Lizenz erforderlich. Zum Erwerb einer Lizenz, folge bitte den Schritten unter [Lizenzen](/erweiterungen/lizenzen).


# Energieskala

Contao EstateManager Erweiterung

![](/files/-MBJV8sPvE-mtnCj0F8o)

Die `Energieskala` Erweiterung integriert eine visuelle Ansicht (Skala) des Energieverbrauchs der Immobilie.

### Installation

{% tabs %}
{% tab title="Composer" %}

```bash
$ composer require contao-estatemanager/energiy-pass
```

{% endtab %}

{% tab title="Contao-Manager" %}
Über die Suche des Contao-Manager kann der Begriff `EstateManager` oder `energy-pass` gesucht werden. Anschließen wählt man das Paket `Contao EstateManager Energieausweis` über die Schaltfläche "*hinzufügen*" aus und klickt zum installieren über den Reiter "*Pakete*" auf die Schaltfläche "*Änderungen anwenden*". Eine detaillierte Anleitung wie man mit dem Contao-Manager arbeitet findest du [hier](https://docs.contao.org/manual/de/installation/erweiterungen-installieren/).
{% endtab %}

{% tab title="GitHub" %}
Installation direkt über GitHub:

<https://github.com/contao-estatemanager/energy-pass>
{% endtab %}
{% endtabs %}

Nach der Installation muss das [Contao-Installtool](https://docs.contao.org/manual/de/installation/contao-installtool/) aufgerufen und die Datenbank aktualisiert werden.&#x20;

### Exposé-Module

Hier finden Sie eine Übersicht neuer (🟢) und erweiterte (🔵) Exposé-Module.

{% tabs %}
{% tab title="🔵 Details" %}
Erweitert die [Details](/installation-konfiguration/backend-konfiguration/expose-module/details) um folgende Einstellungen.

**Einstellungen**

:small\_blue\_diamond:`Energieskala hinzufügen`

*Fügt nach dem Energieausweis eine Energieskala ein. Dafür muss die Detail-Kategorie Energieausweis angewählt sein.*

**Template**

:small\_orange\_diamond:`energiebar_default`
{% endtab %}
{% endtabs %}

### JavaScript-Templates

Hier finden Sie eine Übersicht neuer JavaScript-Templates.

{% tabs %}
{% tab title="🟢 Energieausweis" %}
Für die Animationen innerhalb der Energieskala wird folgendes JavaScript-Template unter Layouts zur Verfügung gestellt.

**Template**

:small\_orange\_diamond:`js_realestateenergiebar`

{% hint style="info" %}
Die zugehörigen CSS-Stile der Energieskala werden automatisch über dieses Template mit eingebunden.
{% endhint %}
{% endtab %}
{% endtabs %}

### Lizenz

Für diese Erweiterung ist eine Lizenz erforderlich. Zum Erwerb einer Lizenz, folge bitte den Schritten unter [Lizenzen](/erweiterungen/lizenzen).


# Virtuelle Tour

Contao EstateManager Erweiterung

![](/files/-M78GkTQFUMO1Q3it2E1)

Die `Virtual Tour` Erweiterung ermöglicht das entgegennehmen und darstellen von 3D-Rundgängen bekannter Drittanbieter. Folgende Drittanbieter werden dabei bereits unterstützt:

* Ogulo
* Immoviewer

Um beliebige Drittanbieter unterstützen zu können, werden Links, welcher der Immobilie zugewiesen sind und mit folgenden Subdomains übertragen / eingerichtet wurden, ebenfalls als 3D-Rundgang erkannt.

* 3d.\*
* 360.\*
* 360grad.\*

Darüber hinaus, steht nach der Installation dieser Erweiterung ein weiteres Immobilien-Feld zur Verfügung, welches unabhängig vom Drittanbieter oder der URL, den dort eingetragenen Link als virtuellen Rundgang erkennt:

* Virtueller 3D-Rundgang

### Installation

{% tabs %}
{% tab title="Composer" %}

```bash
$ composer require contao-estatemanager/virtual-tour
```

{% endtab %}

{% tab title="Contao-Manager" %}
Über die Suche des Contao-Manager kann der Begriff `EstateManager` oder `virtual-tour` gesucht werden. Anschließen wählt man das Paket `Contao EstateManager Virtueller 3D-Rundgang` über die Schaltfläche "*hinzufügen*" aus und klickt zum installieren über den Reiter "*Pakete*" auf die Schaltfläche "*Änderungen anwenden*". Eine detaillierte Anleitung wie man mit dem Contao-Manager arbeitet findest du [hier](https://docs.contao.org/manual/de/installation/erweiterungen-installieren/).
{% endtab %}

{% tab title="GitHub" %}
Installation direkt über GitHub:

<https://github.com/contao-estatemanager/virtual-tour>
{% endtab %}
{% endtabs %}

Nach der Installation muss das [Contao-Installtool](https://docs.contao.org/manual/de/installation/contao-installtool/) aufgerufen und die Datenbank aktualisiert werden.&#x20;

### Module

Hier finden Sie eine Übersicht neuer (🟢), sowie erweiterte (🔵) Module.

{% tabs %}
{% tab title="🔵 Liste" %}
Erweitert die [Liste](/installation-konfiguration/frontend-konfiguration/module/liste) um folgende Einstellungen.

**Einstellungen**

:small\_blue\_diamond:`Virtuellen Rundgang hinzufügen`

*Fügt für jeder Immobilie in der Liste die Möglichkeit hinzu, den virtuellen Rundgang zu öffnen. Die neue Einstellung befindet sich in der Palette `Immobilien Erweiterung` .*

**Template**

:small\_orange\_diamond:`real_estate_itemext_virtual_tour_default`

*Das Template muss über das Feld `Immobilien Template Erweiterung: Virtueller Rundgang`in der Palette `Templates-Einstellungen` ausgewählt werden.*
{% endtab %}

{% tab title="🔵 Ergebnisliste" %}
Erweitert die [Ergebnisliste](/installation-konfiguration/frontend-konfiguration/module/ergebnisliste) um folgende Einstellungen.

**Einstellungen**

:small\_blue\_diamond:`Virtuellen Rundgang hinzufügen`

*Fügt für jeder Immobilie in der Liste die Möglichkeit hinzu, den virtuellen Rundgang zu öffnen. Die neue Einstellung befindet sich in der Palette `Immobilien Erweiterung` .*

**Template**

:small\_orange\_diamond:`real_estate_itemext_virtual_tour_default`

*Das Template muss über das Feld `Immobilien Template Erweiterung: Virtueller Rundgang`in der Palette `Templates-Einstellungen` ausgewählt werden.*
{% endtab %}
{% endtabs %}

### Exposé-Module

Hier finden Sie eine Übersicht neuer (🟢) und erweiterte (🔵) Exposé-Module.

{% tabs %}
{% tab title="🟢 Virtueller-Rundgang" %}
Das Exposé-Modul `Virtueller-Rundgang` ermöglicht die Ausgabe einer Schaltfläche zum öffnen des virtuellen Rundgangs.

**Einstellungen**

:small\_blue\_diamond:`Text`

*Ermöglicht die Ergänzung eines beliebigen Textes.*

:small\_blue\_diamond:`Ausblenden bei keinen Ergebnissen`

*Dieses Modul wird nur ausgegeben wenn ein virtueller Rundgang zum darstellen gefunden wurde.*

**Template**

:small\_orange\_diamond:`expose_mod_virtualTour`
{% endtab %}

{% tab title="🔵 Galerie" %}
Erweitert das Exposé-Modul [Galerie](/installation-konfiguration/backend-konfiguration/expose-module/galerie) um eine weitere Galerie-Kategorie (Virtueller-Rundgang). Des Weiteren wird eine neue Palette (Virtueller-Rundgang Einstellungen) erzeugt um folgende Einstellungen vornehmen zu können.

**Einstellungen**

:small\_blue\_diamond:`Vorschaubild verwenden`

Gibt ein Vorschaubild aus. Sofern kein eigenes Bild ausgewählt wurde, wird das Titelbild der Immobilie verwendet.

:small\_blue\_diamond:`Eigenes Vorschaubild`

Hier können Sie ein eigenes Vorschaubild definieren.

{% hint style="warning" %}
Bitte beachte das mitgelieferte JavaScript-Template für die Verwendung von Vorschaubildern.
{% endhint %}

**Template**

:small\_orange\_diamond:`expose_mod_virtual_tour_gallery_default`
{% endtab %}
{% endtabs %}

### Status-Token

Die Liste von vorhandenen Status-Token wird um den `Virtuellen-Rundgang` Status-Token ergänzt und steht anschließend überall dort zur Verfügung, wo Status-Token ausgegeben werden können.

### JavaScript-Templates

Hier finden Sie eine Übersicht neuer JavaScript-Templates.

{% tabs %}
{% tab title="🟢 Virtueller Rundgang" %}
Um den virtuellen Rundgang bei Verwendung eines Vorschaubild nicht direkt einzubinden (da diese zum Beispiel bei verschiedenen Anbietern mit Musik unterspielt werden), bindet das mitgelieferte JavaScript-Template die Zielseite erst nach Klick auf das Vorschaubild ein.

**Template**

:small\_orange\_diamond:`js_realestatevirtualtour`

**Events**

Um von außen bei Klick auf das Vorschaubild Einfluss nehmen zu können, wird ein`CustomEvent` registriert und kann nach Bedarf entgegengenommen werden.

* `virtualtour.onClickPreview`

```javascript
document.addEventListener('virtualtour.onClickPreview', function(e){
    // Do something
    console.log(e.detail);
});
```

{% endtab %}
{% endtabs %}

### Lizenz

Für diese Erweiterung ist eine Lizenz erforderlich. Zum Erwerb einer Lizenz folge bitte den Schritten unter [Lizenzen](/erweiterungen/lizenzen).


# Käufer- / Mieterfinder

Contao EstateManager Erweiterung

{% hint style="info" %}
Für diese Erweiterung wird es aufgrund geringer Nachfrage keine Nachfolger geben. Sollten Sie dennoch eine Kompatibilität mit Contao 5 wünschen, können Sie uns gerne [mit der Umsetzung beauftragen](https://www.oveleon.de/kontakt.html#kontaktformular):
{% endhint %}

![](/files/-M78HPMZzxW31QeO_Utn)

Die `Käufer- / Mieterfinder` Erweiterung liefert ein Tool, welches Verkäufern / Immobilienbesitzern anhand der eigenen Immobilien-Eckdaten ermöglicht, passende Interessenten zu finden. Dabei können bis zu drei Bereiche ausgegeben und kombiniert werden.

1. **Ermittlung der Immobilien-Eckdaten (Filter)**\
   *Ermöglicht die Filterung der Interessenten anhand eigener Immobilien-Eckdaten*\
   \_\_
2. **Anzeige der gefundenen Interessenten (Liste)**\
   *Zeigt anonyme Daten der Interessenten wie Anzahl der Zimmer oder Preisvorstellungen.*\
   \_\_
3. **Kontaktaufnahme (Formular)**\
   \*\*\*\*Beliebiges Formular, welches über den von Contao mitgelieferten Formulargenerator angelegt werden kann.

{% hint style="warning" %}
Der Käufer- / Mieterfinder zeigt ausschließlich Daten (Suchanfragen) an, welche manuell im System angelegt, durch andere Systeme importiert wurden oder über ein Formular (Frontend) in die dafür vorgesehene Tabelle (`tl_search_criteria`) gespeichert werden.
{% endhint %}

### Installation

{% tabs %}
{% tab title="Composer" %}

```bash
$ composer require contao-estatemanager/lead-matching-tool
```

{% endtab %}

{% tab title="GitHub" %}
Installation direkt über GitHub:

<https://github.com/contao-estatemanager/lead-matching-tool>
{% endtab %}
{% endtabs %}

Nach der Installation muss das [Contao-Installtool](https://docs.contao.org/manual/de/installation/contao-installtool/) aufgerufen und die Datenbank aktualisiert werden.

### Suchanfragen

Suchanfragen dienen als Grundlage des Käufer- / Mieterfinders und können über verschiedene Wege in das System überführt werden.

![](/files/-MkbQ283rZVNjXP0o8tD)

{% hint style="info" %}
Mit der Erweiterung [onOffice API Import](/erweiterungen/erweiterungen/onoffice-api-import) können alle benötigten Daten für den Käufer- / Mieterfinders direkt aus onOffice importiert und aktuell gehalten werden.
{% endhint %}

### Konfiguration

Um das Tool im Frontend über das mitgelieferte Modul ausgeben lassen zu können, muss vorerst eine Konfiguration im Backend angelegt werden.

#### Titel / Grundkonfiguration

:small\_blue\_diamond:`Titel`

*Dieser Titel wird ausschließlich zu Beschreibungszwecken im Backend verwendet.*

:small\_blue\_diamond:*`Vermarktungsart`*

*Hier stehen drei Auswahlmöglichkeiten zur Verfügung. Bei Auswahl einer fest definierten Option wie **Kauf** oder **Miete**, wird die Auswahl der Vermarktungsart im Frontend unterbunden.*

:small\_blue\_diamond:*`Regionen Eingabemodus`*

*Definiert die Möglichkeit, wie Regionen im Frontend ausgegeben und gewählt werden können. Regionen können im Reiter "Regionen" verwaltet werden. Bei Auswahl einer Umkreissuche (empfohlen) werden Längen- und Breitengrade in den Regionen vorausgesetzt.*

#### *Daten-Konfiguration*

:small\_blue\_diamond:*`Vermarktungsarten`*

*Sofern die Vermarktungsart nicht fest definiert wurde, kann der Besucher aus den hier ausgewählten Vermarktungsarten wählen.*

:small\_blue\_diamond:`Objektarten`

*Definiert die wählbaren Objektarten im Frontend. Objektarten können im Reiter "Objektarten" verwaltet werden.*

#### *Suchanfragen / Liste*

:small\_blue\_diamond:`Feld Meta-Daten`

*Definiert die auszugebenden Felder der Suchaufträge innerhalb der Liste.*

:small\_blue\_diamond:*`Überschrift`*

*Eine Überschrift, welche oberhalb der Liste ausgegeben wird.*

:small\_blue\_diamond:*`Beschreibung`*

*Ein Beschreibungstext, welcher oberhalb der Liste ausgegeben wird.*

:small\_blue\_diamond:*`Gesamtanzahl der Beiträge`*

*Definiert die Gesamtanzahl der Beiträge. Bei 0 werden alle Beiträge ausgegeben.*

:small\_blue\_diamond:`Elemente pro Seite`

*Definiert die Anzahl pro Seite (Paginierung).*

:small\_blue\_diamond:*`Listen Element-Template`*

*Definiert das zu verwendende Template für Listenelemente.*

:small\_blue\_diamond:*`Anzahl anzeigen`*

*Gibt die Anzahl der gefundenen Interessent aus und aktualisiert die Zahl sofort, sofern ein Filter verwendet und durch den Besucher angepasst wird.*

#### *Filter / Immobilienformular*

:small\_blue\_diamond:`Filter hinzufügen`

*Definiert, ob ein Filter für Immobilien-Eckdaten aktiviert und angezeigt wird.*

:small\_blue\_diamond:*`Überschrift`*

*Eine Überschrift, welche oberhalb des Filters ausgegeben wird.*

:small\_blue\_diamond:*`Beschreibung`*

*Ein Beschreibungstext, welcher oberhalb der Liste ausgegeben wird.*

:small\_blue\_diamond:*`Liste immer anzeigen`*

*Definiert, ob die Liste bereits ohne Filterung ausgegeben werden darf.*

:small\_blue\_diamond:*`Immobilien-Formularfelder`*

*Definiert die Felder, welche im Filter ausgegeben werden. Das Feld Vermarktungsart wird nur ausgegeben, sofern keine feste Vermarktungsart unter "Daten-Konfiguration" gewählt wurde. Das Feld **Umkreis** wird nur berücksichtig, sofern eine Umkreissuche unter **Regionen Eingabemodus** ausgewählt wurde.*

#### *Kontaktformular*

:small\_blue\_diamond:`Kontaktformular hinzufügen`

*Definiert, ob ein Kontaktformular ausgegeben werden soll.*

:small\_blue\_diamond:*`Überschrift`*

*Eine Überschrift, welche oberhalb des Formulars ausgegeben wird.*

:small\_blue\_diamond:*`Beschreibung`*

*Ein Beschreibungstext, welcher oberhalb des Formulars ausgegeben wird.*

:small\_blue\_diamond:*`Kontaktformular immer anzeigen`*

*Definiert, ob das Kontaktformular bereits ohne Filterung ausgegeben werden darf.*

:small\_blue\_diamond:*`Kontakt-Formular`*

*Definiert das auszugebende Formular, welches zuvor im Formulargenerator gebaut wurde.*

### Module

Hier finden Sie eine Übersicht neuer (🟢) Module.

{% tabs %}
{% tab title="🟢 Käufer- / Mieterfinder" %}
Gibt das Tool "Käufer- / Mieterfinder" anhand einer Konfiguration aus.

**Einstellungen**

:small\_blue\_diamond:`Konfiguration`

*Die zu verwendende Konfiguration.*

**Template**

:small\_orange\_diamond:`mod_lead_matching`

:small\_orange\_diamond:`search_criteria_item_default`
{% endtab %}
{% endtabs %}

### Lizenz

Für diese Erweiterung ist eine Lizenz erforderlich. Zum Erwerb einer Lizenz folge bitte den Schritten unter [Lizenzen](/erweiterungen/lizenzen).


# Video

Contao EstateManager Erweiterung

![](/files/-M78Gv0Dj7qsrOGrL4fH)

{% hint style="info" %}
Derzeit noch keine Dokumentation vorhanden.
{% endhint %}


# Google Maps

Contao EstateManager Erweiterung

![](/files/-M78Gz2FqIUtslNUAKud)

{% hint style="info" %}
Derzeit noch keine Dokumentation vorhanden.
{% endhint %}


# Google Autocomplete

![](/files/-MOfUXTqUu1HNjf4-i0Z)

{% hint style="info" %}
Derzeit noch keine Dokumentation vorhanden.
{% endhint %}


# Google Geodata

![](/files/-MOfUXTpat2MU45PhWHu)

{% hint style="info" %}
Derzeit noch keine Dokumentation vorhanden.
{% endhint %}


# Top-Objekte

Contao EstateManager Erweiterung

![](/files/-M78H644Q4Pa7drtmOpj)

{% hint style="info" %}
Derzeit noch keine Dokumentation vorhanden.
{% endhint %}


# Projekte

Contao EstateManager Erweiterung

![](/files/-M78H96DeHnk9uTBkFh4)

{% hint style="info" %}
Derzeit noch keine Dokumentation vorhanden.
{% endhint %}


# Referenzen

Contao EstateManager Erweiterung

![](/files/-M78HHpck6tDJQu6_sA8)

{% hint style="info" %}
Derzeit noch keine Dokumentation vorhanden.
{% endhint %}


# Standorte

Contao EstateManager Erweiterung

![](/files/-M78HKrAOzsG8KOn554k)

{% hint style="info" %}
Derzeit noch keine Dokumentation vorhanden.
{% endhint %}


# WIB Import

Contao EstateManager Erweiterung

{% hint style="info" %}
Für diese Erweiterung wird es aufgrund geringer Nachfrage keine Nachfolger geben. Sollten Sie dennoch eine Kompatibilität mit Contao 5 wünschen, können Sie uns gerne [mit der Umsetzung beauftragen](https://www.oveleon.de/kontakt.html#kontaktformular):
{% endhint %}

![](/files/-M78Hi4T3iojroh4iOZQ)


# Exposé Social-Meta

Contao EstateManager Erweiterung

![](/files/-M78I-VjkH_BdnWSLRFf)

{% hint style="info" %}
Derzeit noch keine Dokumentation vorhanden.
{% endhint %}


# onOffice API Import

{% hint style="info" %}
Für diese Erweiterung wird es aufgrund geringer Nachfrage keine Nachfolger geben. Sollten Sie dennoch eine Kompatibilität mit Contao 5 wünschen, können Sie uns gerne [mit der Umsetzung beauftragen](https://www.oveleon.de/kontakt.html#kontaktformular):
{% endhint %}

Die `onOffice API Import` Erweiterung ermöglicht den Import verschiedener Datensätze aus onOffice heraus.

{% hint style="warning" %}
Es wird ein kostenpflichtiger onOffice API Benutzer benötigt.
{% endhint %}

### Übersicht

| Import                  | benötigte Erweiterung                                                                                       |
| ----------------------- | ----------------------------------------------------------------------------------------------------------- |
| Regionen (onOffice)     | ``[`contao-estatemanager/region-entity`](https://github.com/contao-estatemanager/region-entity)``           |
| Objekttypen (onOffice)  | ``[`contao-estatemanager/object-type-entity`](https://github.com/contao-estatemanager/object-type-entity)`` |
| Suchaufträge (onOffice) | ``[`contao-estatemanager/lead-matching-tool`](https://github.com/contao-estatemanager/lead-matching-tool)`` |

| Synchronisation / Cronjob                       | benötigte Erweiterung                                                                                       |
| ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| Suchaufträge importieren (onOffice)             | ``[`contao-estatemanager/lead-matching-tool`](https://github.com/contao-estatemanager/lead-matching-tool)`` |
| Suchaufträge aktualisieren / löschen (onOffice) | [`contao-estatemanager/lead-matching-tool`](https://github.com/contao-estatemanager/lead-matching-tool)\`\` |


# Immobilien-Eigenschaften

### Übersicht aller Immobilien-Felder

* id
* tstamp
* dateAdded
* alias
* provider
* contactPerson
* anbieternr
* nutzungsart
* vermarktungsartKauf
* vermarktungsartMietePacht
* vermarktungsartErbpacht
* vermarktungsartLeasing
* objektart
* zimmerTyp
* wohnungTyp
* hausTyp
* grundstTyp
* bueroTyp
* handelTyp
* gastgewTyp
* hallenTyp
* landTyp
* parkenTyp
* sonstigeTyp
* freizeitTyp
* zinsTyp
* kaufpreisAufAnfrage
* kaufpreis
* kaufpreisnetto
* kaufpreisbrutto
* nettokaltmiete
* kaltmiete
* warmmiete
* freitextPreis
* nebenkosten
* heizkosten
* heizkostenEnthalten
* heizkostennetto
* heizkostenust
* zzgMehrwertsteuer
* mietzuschlaege
* hauptmietzinsnetto
* hauptmietzinsust
* pauschalmiete
* betriebskostennetto
* betriebskostenust
* evbnetto
* evbust
* gesamtmietenetto
* gesamtmieteust
* gesamtmietebrutto
* gesamtbelastungnetto
* gesamtbelastungust
* gesamtbelastungbrutto
* gesamtkostenprom2von
* gesamtkostenprom2bis
* monatlichekostennetto
* monatlichekostenust
* monatlichekostenbrutto
* nebenkostenprom2von
* nebenkostenprom2bis
* ruecklagenetto
* ruecklageust
* sonstigekostennetto
* sonstigekostenust
* sonstigemietenetto
* sonstigemieteust
* summemietenetto
* summemieteust
* nettomieteprom2von
* nettomieteprom2bis
* pacht
* erbpacht
* hausgeld
* abstand
* preisZeitraumVon
* preisZeitraumBis
* preisZeiteinheit
* mietpreisProQm
* kaufpreisProQm
* provisionspflichtig
* provisionTeilen
* provisionTeilenWert
* innenCourtage
* innenCourtageMwst
* aussenCourtage
* courtageHinweis
* aussenCourtageMwst
* provisionnetto
* provisionust
* provisionbrutto
* waehrung
* mwstSatz
* mwstGesamt
* xFache
* nettorendite
* nettorenditeSoll
* nettorenditeIst
* mieteinnahmenIst
* mieteinnahmenIstPeriode
* mieteinnahmenSoll
* mieteinnahmenSollPeriode
* erschliessungskosten
* kaution
* kautionText
* geschaeftsguthaben
* richtpreis
* richtpreisprom2
* stpCarport
* stpCarportMietpreis
* stpCarportKaufpreis
* stpDuplex
* stpDuplexMietpreis
* stpDuplexKaufpreis
* stpFreiplatz
* stpFreiplatzMietpreis
* stpFreiplatzKaufpreis
* stpGarage
* stpGarageMietpreis
* stpGarageKaufpreis
* stpParkhaus
* stpParkhausMietpreis
* stpParkhausKaufpreis
* stpTiefgarage
* stpTiefgarageMietpreis
* stpTiefgarageKaufpreis
* stpSonstige
* stpSonstigeMietpreis
* stpSonstigeKaufpreis
* stpSonstigePlatzart
* stpSonstigeBemerkung
* plz
* ort
* strasse
* hausnummer
* breitengrad
* laengengrad
* bundesland
* land
* flur
* flurstueck
* gemarkung
* etage
* anzahlEtagen
* lageImBau
* wohnungsnr
* lageGebiet
* gemeindecode
* regionalerZusatz
* kartenMakro
* kartenMikro
* virtuelletour
* luftbildern
* objekttitel
* objektbeschreibung
* ausstattBeschr
* lage
* sonstigeAngaben
* objektText
* dreizeiler
* beginnAngebotsphase
* besichtigungstermin
* besichtigungstermin2
* beginnBietzeit
* endeBietzeit
* hoechstgebotZeigen
* mindestpreis
* zwangsversteigerung
* aktenzeichen
* zvtermin
* zusatztermin
* amtsgericht
* verkehrswert
* wohnflaeche
* nutzflaeche
* gesamtflaeche
* ladenflaeche
* lagerflaeche
* verkaufsflaeche
* freiflaeche
* bueroflaeche
* bueroteilflaeche
* fensterfront
* verwaltungsflaeche
* gastroflaeche
* grz
* gfz
* bmz
* bgf
* grundstuecksflaeche
* sonstflaeche
* anzahlZimmer
* anzahlSchlafzimmer
* anzahlBadezimmer
* anzahlSepWc
* anzahlBalkone
* anzahlTerrassen
* anzahlLogia
* balkonTerrasseFlaeche
* anzahlWohnSchlafzimmer
* gartenflaeche
* kellerflaeche
* fensterfrontQm
* grundstuecksfront
* dachbodenflaeche
* teilbarAb
* beheizbareFlaeche
* anzahlStellplaetze
* plaetzeGastraum
* anzahlBetten
* anzahlTagungsraeume
* vermietbareFlaeche
* anzahlWohneinheiten
* anzahlGewerbeeinheiten
* einliegerwohnung
* kubatur
* ausnuetzungsziffer
* flaechevon
* flaechebis
* ausstattKategorie
* wgGeeignet
* raeumeVeraenderbar
* bad
* kueche
* boden
* kamin
* heizungsart
* befeuerung
* klimatisiert
* fahrstuhlart
* stellplatzart
* gartennutzung
* ausrichtBalkonTerrasse
* moebliert
* rollstuhlgerecht
* kabelSatTv
* dvbt
* barrierefrei
* sauna
* swimmingpool
* waschTrockenraum
* wintergarten
* dvVerkabelung
* rampe
* hebebuehne
* kran
* gastterrasse
* stromanschlusswert
* kantineCafeteria
* teekueche
* hallenhoehe
* angeschlGastronomie
* brauereibindung
* sporteinrichtungen
* wellnessbereich
* serviceleistungen
* telefonFerienimmobilie
* breitbandZugang
* breitbandGeschw
* breitbandArt
* umtsEmpfang
* sicherheitstechnik
* unterkellert
* abstellraum
* fahrradraum
* rolladen
* bibliothek
* dachboden
* gaestewc
* kabelkanaele
* seniorengerecht
* baujahr
* letztemodernisierung
* zustand
* alterAttr
* bebaubarNach
* erschliessung
* erschliessungUmfang
* bauzone
* altlasten
* verkaufstatus
* zulieferung
* ausblick
* distanzFlughafen
* distanzFernbahnhof
* distanzAutobahn
* distanzUsBahn
* distanzBus
* distanzKindergarten
* distanzGrundschule
* distanzHauptschule
* distanzRealschule
* distanzGesamtschule
* distanzGymnasium
* distanzZentrum
* distanzEinkaufsmoeglichkeiten
* distanzGaststaetten
* distanzSportStrand
* distanzSportSee
* distanzSportMeer
* distanzSportSkigebiet
* distanzSportSportanlagen
* distanzSportWandergebiete
* distanzSportNaherholung
* energiepassEpart
* energiepassGueltigBis
* energiepassEnergieverbrauchkennwert
* energiepassMitwarmwasser
* energiepassEndenergiebedarf
* energiepassPrimaerenergietraeger
* energiepassStromwert
* energiepassWaermewert
* energiepassWertklasse
* energiepassBaujahr
* energiepassAusstelldatum
* energiepassJahrgang
* energiepassGebaeudeart
* energiepassEpasstext
* energiepassHwbwert
* energiepassHwbklasse
* energiepassFgeewert
* energiepassFgeeklasse
* objektadresseFreigeben
* verfuegbarAb
* abdatum
* bisdatum
* minMietdauer
* maxMietdauer
* versteigerungstermin
* wbsSozialwohnung
* vermietet
* gruppennummer
* zugang
* laufzeit
* maxPersonen
* nichtraucher
* haustiere
* geschlecht
* denkmalgeschuetzt
* alsFerien
* gewerblicheNutzung
* branchen
* hochhaus
* objektnrIntern
* objektnrExtern
* aktivVon
* aktivBis
* openimmoObid
* kennungUrsprung
* standVom
* weitergabeGenerell
* weitergabePositiv
* weitergabeNegativ
* sprache
* titleImageSRC
* imageSRC
* planImageSRC
* interiorViewImageSRC
* exteriorViewImageSRC
* mapViewImageSRC
* panoramaImageSRC
* epassSkalaImageSRC
* logoImageSRC
* qrImageSRC
* documents
* links
* anbieterobjekturl
* published


# Immobilien-Objekt

Über das Immobilien-Objekt können alle Eigenschaften einer Immobilie ausgelesen, validiert und für die Ausgabe aufbereitet werden.

### Funktionsumfang

| Funktionen                                                                                                                                                  |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `get(<string> $name): null\|array<FormattedCollection>`                                                                                                     |
| `getType(): RealEstateTypeModel`                                                                                                                            |
| `generateExposeUrl(<int\|PageModel> $varPage): string`                                                                                                      |
| `getFields(<array> $fields): array`                                                                                                                         |
| `getMainImageUuid(): string`                                                                                                                                |
| `getImagesUuids(<array> $arrFields = null, $max = null): array`                                                                                             |
| `getStatusTokens(<array> $validStatusToken = null): array`                                                                                                  |
| `getMarketingToken(): array`                                                                                                                                |
| `getLocation(<bool> $forceCompleteAddress = false): array`                                                                                                  |
| `getLocationString(<bool> $forceCompleteAddress = false): string`                                                                                           |
| `getMainPrice(): null\|array<FormattedCollection>`                                                                                                          |
| `getMainArea(): null\|array<FormattedCollection>`                                                                                                           |
| `getAreas(): array\|null`                                                                                                                                   |
| `getPrices(): array\|null`                                                                                                                                  |
| `getAttributes(): array\|null`                                                                                                                              |
| `getDetails(<bool> $includeAddress = false): array\|null`                                                                                                   |
| `getEnergy(): array\|null`                                                                                                                                  |
| `getPropertiesByGroup(<array> $separateGroups=null, <bool> $includeAddress = false, <array> $validGroups = null, <string> $defaultGroup = 'detail'): array` |
| `getMainDetails(<int> $max = null): array`                                                                                                                  |
| `getMainAttributes(<int> $max = null): array`                                                                                                               |
| `getTexts(<array> $validTexts = null, <int> $maxTextLength = 0): array\|null`                                                                               |
| `getProvider(): ProviderModel`                                                                                                                              |
| `getContactPerson(<bool> $forceCompleteAddress = false, <bool> $useProviderForwarding = false): aray\|null`                                                 |
| `generateMainImage(<array\|string> $imgSize): string`                                                                                                       |
| `generateGallery(<array\|string> $imgSize, <array> $arrFields = null, <int> $max = null): array`                                                            |

**Siehe auch:** [Eigenschaften über das Immobilien-Objekt aus dem Template heraus abrufen](/entwickler/templates#eigenschaften-ueber-das-immobilien-objekt-aus-dem-template-heraus-abrufen).


# FormattedCollection

Aufbereitung eines Immobilien-Datensatzes

Wie bereits unter [Feldformatierungen](/installation-konfiguration/backend-konfiguration/feldformatierungen) beschrieben, können Werte der verfügbaren Immobilien-Eigenschaften über verschiedene Aktionen formatiert, umgewandelt oder gar ausgetauscht werden. Beim abholen der anzuzeigenden Felder wird der Wert also immer unter Berücksichtigung dieser Konfiguration validiert und ausgegeben.

Eine `FormattedCollection` bezeichnet also ein Paket von validierten / formatierten Feldwerten und setzt sich aus folgenden Bestandteilen zusammen:

```php
// FormattedCollection
array(
    'value' // formatierter Wert
    'raw'   // unformatierter Wert
    'label' // übersetzter Bezeichner
    'key'   // Feldname (nicht übersetzt)
    'class' // individuelle CSS-Klasse
);
```


# Templates

Wie in Contao selber, können alle Templates des EstateManagers über den Reiter *Templates* im Backend angepasst, überschrieben oder ergänzt werden. Dabei gibt es die Besonderheit, dass Templates welche für die Darstellung einzelner Immobilien bereitgestellt werden, ein Objekt mit [nützlichen Funktionen](/entwickler/immobilien-eigenschaften/immobilien-objekt) sowie den [Immobilien-Eigenschaften](/entwickler/immobilien-eigenschaften) übergeben wird. Dadurch können jegliche Informationen direkt über das Template abgerufen werden.

### Template-Übersicht

| Template-Präfix (html5)                         | Beschreibung                                                                                   |                            |
| ----------------------------------------------- | ---------------------------------------------------------------------------------------------- | -------------------------: |
| **real\_estate\_item\_\***                      | Definiert die Darstellung pro Immobilie in Listen.                                             |       :white\_check\_mark: |
| real\_estate\_item\_default                     |                                                                                                |       :white\_check\_mark: |
| real\_estate\_item\_simple                      |                                                                                                |       :white\_check\_mark: |
| **real\_estate\_itemext\_\***                   | Templates für die Ergänzung weiterer Bestandteile für die Darstellung pro Immobilie in Listen. |       :white\_check\_mark: |
| real\_estate\_itemext\_contact\_person\_default | Ausgabe der Kontaktperson pro Immobilie in Listen.                                             |       :white\_check\_mark: |
| real\_estate\_itemext\_provider\_default        | Ausgabe des Anbieters pro Immobilie in Listen.                                                 |       :white\_check\_mark: |
| **expose\_mod\_\***                             | Definiert die Ausgabe des Exposé-Moduls.                                                       |       :white\_check\_mark: |
| expose\_mod\_address                            |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_attachments                        |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_contactPerson                      |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_details                            |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_enquiryForm                        |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_fieldList                          |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_gallery                            |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_gallery\_items                     |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_html                               |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_mainArea                           |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_mainAttributes                     |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_mainDetails                        |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_mainPrice                          |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_marketingToken                     |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_print                              |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_share                              |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_share\_email                       |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_statusToken                        |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_texts                              |                                                                                                |       :white\_check\_mark: |
| expose\_mod\_title                              |                                                                                                |       :white\_check\_mark: |
| **mod\_realEstate\***                           | Modul-Templates                                                                                | :heavy\_multiplication\_x: |
| mod\_realEstateExpose                           |                                                                                                | :heavy\_multiplication\_x: |
| mod\_realEstateList                             |                                                                                                | :heavy\_multiplication\_x: |
| mod\_realEstateResultList                       |                                                                                                | :heavy\_multiplication\_x: |

:white\_check\_mark:*Das* [*Immobilien-Objekt*](/entwickler/immobilien-eigenschaften/immobilien-objekt) *steht im Template zur Verfügung*\
\_\_:heavy\_multiplication\_x:*Das* [*Immobilien-Objekt*](/entwickler/immobilien-eigenschaften/immobilien-objekt) *steht **nicht** im Template zur Verfügung*

### Eigenschaften über das Immobilien-Objekt aus dem Template heraus abrufen

Über `$this->realEstate` kann auf Methoden und Eigenschaften zugegriffen werden. Sofern eine Funktion ohne eigene Parameterübergabe aufgerufen wird, werden die im Modul hinterlegten Einstellungen übernommen. Sollten wir uns bspw. im Listen-Modul befinden und wie im folgenden Beispiel die Funktion `generateExposeUrl` ohne eigene Parameter aufrufen, wird automatisch die im Modul hinterlegte "Weiterleitungsseite" verwendet, um die Exposé-URL zu generieren.

{% code title="Template - Beispiel 1" %}

```markup
<a href="<?= $this->realEstate->generateExposeUrl() ?>">Details</a>
```

{% endcode %}

{% hint style="info" %}
Bitte beachte, dass Eigenschaften, welche über bereitgestellte Funktionen abgeholt werden, meist als [FormattedCollection](/entwickler/immobilien-eigenschaften/formattedcollection) zurückgeliefert werden.
{% endhint %}

Der direkte Zugriff auf eine Eigenschaft liefert dabei immer den unformatierten Wert zurück. Um den formatierten Wert, sowie weitere Informationen zu erhalten, muss die Eigenschaft über die `get` -Methode abgerufen werden.

{% code title="Template - Beispiel 2" %}

```php
// Formatierter Wert (array<FormattedCollection>|null)
<?php $price = $this->realEstate->get('kaufpreis') ?>

// Unformatierter Wert (string|float)
<?= $this->realEstate->kaufpreis ?>
```

{% endcode %}


# Hooks


# parseRealEstate

Der `parseRealEstate` Hook wird aufgerufen bevor das Template einer einzelnen Immobilie geparsed wird.

### Parameter

1. \Contao\FrontendTemplate `$objTemplate`\
   Das Immobilien-Template<br>
2. \ContaoEstateManager\RealEstate`$objRealEstate`\
   Das Immobilien-Objekt<br>
3. \ContaoEstateManager\ModuleRealEstate`$objModule`\
   Das aktuelle Modul

### Beispiel

```php
public function onParseRealEstate(\Contao\FrontendTemplate &$objTemplate, \ContaoEstateManager\RealEstate $objRealEstate, \ContaoEstateManager\ModuleRealEstate $objModule): void
{
    // Do something …
}
```


# API

## &#x20;Immobilien

<mark style="color:blue;">`GET`</mark> `https://domain.com/api/estatemanager/v1/estates/:id`

Abrufen einer oder mehrerer Immobilien.

#### Path Parameters

| Name | Type    | Description                   |
| ---- | ------- | ----------------------------- |
| id   | integer | ID der abzurufenden Immobilie |

#### Query Parameters

| Name       | Type    | Description                                                                                                                        |
| ---------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| moduleID   | integer | Modul-ID (`required` für das verwenden eines Filters sowie eines Templates mit Immobilien-Objekt)                                  |
| pageId     | integer | Seiten-ID (`required` für das verwenden eines Filters)                                                                             |
| template   | string  | Name des Fronend-Templates (Bspw. `real_estate_item_default`).                                                                     |
| dataType   | string  | `json, geojson` Default: `json`                                                                                                    |
| fields     | array   | Die abzurufenden Immobilien-Felder.                                                                                                |
| groups     | array   | Die abzurufenden Immobilien-Gruppen. (`required` für das verwenden eines Filters)                                                  |
| filter     | boolean | Die Abfrage findet unter Berücksichtigung eines Filters statt.                                                                     |
| filterMode | boolean | Sofern ein Filter verwendet werden soll, kann hier der Filter-Modus definiert werden. (`required` für das verwenden eines Filters) |

{% tabs %}
{% tab title="200 /api/estatemanager/v1/estates/35" %}

```javascript
{
  "status": "OK",
  "meta": [
    "total": 1,
    "query": []
  ],
  "results": [
    {
      "id": "35",
      "dateAdded": "1543328488",
      "dateChanged": "1572949938"
    }
  ]
}
```

{% endtab %}
{% endtabs %}

## Kontaktpersonen

<mark style="color:blue;">`GET`</mark> `https://domain.com/api/estatemanager/v1/contactpersons/:id`

Abrufen einer oder mehrerer Kontaktpersonen.

#### Path Parameters

| Name | Type   | Description                       |
| ---- | ------ | --------------------------------- |
| id   | string | ID der abzurufenden Kontaktperson |

#### Query Parameters

| Name    | Type  | Description                            |
| ------- | ----- | -------------------------------------- |
| imgSize | array | Bildgröße des Kontaktpersonen-Fotos.   |
| fields  | array | Die abzurufenden Kontaktperson-Felder. |

{% tabs %}
{% tab title="200 /api/estatemanager/v1/contactpersons?fields\[]=vorname\&fields\[]=name" %}

```javascript
{
  "status": "OK",
  "meta": [
    "total": 1,
    "query": [
      "fields": [
        "vorname",
        "name"
      ]
    ]
  ],
  "results": [
    {
      "vorname": "Maria",
      "name": "Musterfrau"
    }
  ]
}
```

{% endtab %}
{% endtabs %}

{% content-ref url="/pages/bfuFamdeqzASvH26zwuY" %}
[Fehlerbehandlung](/entwickler/fehlerbehandlung)
{% endcontent-ref %}


# Fehlerbehandlung

### Fehlercodes

Für kritische Fehler, die während der Laufzeit auftreten, können unter `Verwaltung` -> `Einstellungen` Benachrichtigungen aktiviert werden.

{% hint style="warning" %}
Dieses Feature existiert nur in Version 2.0
{% endhint %}

| Fehlercode                             | Beschreibung                                                                                                                                  |
| -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| <mark style="color:red;">`1001`</mark> | Beim Importieren von Immobilien und Kontaktpersonen ist ein Fehler aufgetreten. Weitere Informationen, entnehmen Sie bitte der Fehlermeldung. |

### API - Fehlercodes

| Fehlercode                             | Beschreibung                                                                                                                                                        |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <mark style="color:red;">`3001`</mark> | Es kann keine Verbindung hergestellt werden. Überprüfe ob der API-Schlüssel korrekt ist und eine Verbindung zum Server hergestellt werden kann.                     |
| <mark style="color:red;">`3002`</mark> | Um die Abfrage durchzuführen werden ein oder mehrere Parameter benötigt. Welche Parameter fehlen, kann der Fehlermeldung entnommen werden.                          |
| <mark style="color:red;">`3003`</mark> | Der Übergebene Parameter ist nicht korrekt. Dieser Fehler tritt auf, wenn ein Parameter bspw. als `string` übergeben, jedoch in Form eines `array`´s erwartet wird. |
| <mark style="color:red;">`3004`</mark> | Fehler beim erstellen der Rückgabe. Dieser Fehler tritt auf, wenn bspw. ein falscher oder nicht existierender Wert im Parameter `format` übergeben wird.            |


# Glossar

Definition verwendeter Begriffe in dieser Dokumentation

**Exposé**\
Wird als vom EstateManager generierte Detailseite einer Immobilie verstanden.

**Status-Token**\
Als Status-Token werden Hinweise oder Attribute einer Immobilie wie "Neu", "Reserviert" oder "Verkauft" verstanden.

**Primäre Attribute / Details**\
Als primäre Attribute oder Details werden die für einen Objekttypen definierten Hauptmerkmale bezeichnet. Attribute unterscheiden sich dabei meist als einfache Ja/Nein Merkmale, Details hingegen können explizite Angaben wie Flächenangaben, Objektarten oder das Baujahr beinhalten.


# Welcome

Open Source EstateManager for Contao CMS

![](/files/-M78FmcVMuIoTup_1l48)

Welcome to the documentation for Contao EstateManager (hereafter EstateManager), an open source project to build small to medium sized real estate websites, up to large real estate portals.

**Languages:**

* English
* [Deutsch](https://docs.contao-estatemanager.com/v/deutsch/)

{% hint style="warning" %}
Please note that the [German](https://docs.contao-estatemanager.com/v/deutsch/) version of the documentation is currently more complete than the English version.
{% endhint %}


